随笔分类 -  ElasticSearch

摘要:ElasticSearch包含的信息量很多,倒排索引结构也很复杂,包括:文档的列表,文档的数量,词条在每个文档中出现的次数,出现的位置,每个文档的长度,所有文档的平均长度等。相应的ElasticSearch使索引的结构一经创建不能改变。 ElasticSearch不让索引改变有以下优点: 1)不需要 阅读全文
posted @ 2020-04-12 17:57 雷雨客 阅读(793) 评论(1) 推荐(0) 编辑
摘要:ElasticSearch中字段的类型一旦确定就不能修改,如果我们要修改其类型就要重新建mapping。然后把旧索引中的数据批量导入到新索引中。同时采用给索引起别名的方式使客户端应用程序不需要重启。 1、演示字段类型一旦确定不能修改 添加文档,同时默认创建了索引 PUT index1/type1/1 阅读全文
posted @ 2020-04-12 17:45 雷雨客 阅读(420) 评论(0) 推荐(0) 编辑
摘要:本篇分3部分说一下ElasticSearch的动态映射策略。 1、dynamic陌生字段处理配置 添加文档时,如果遇到了mapping里面没有定义的字段会怎样呢?这就依赖创建mapping时的dynamic配置情况,该属性参数有3种配置值: 1)true:遇到陌生字段就自动映射,ElasticSea 阅读全文
posted @ 2020-04-12 15:59 雷雨客 阅读(614) 评论(0) 推荐(0) 编辑
摘要:1、scroll及其步骤简单说明 如果一次性要查出来比如10万条数据,那么性能会很差,此时一般会采取用scroll滚动查询,一批一批的查,直到所有数据都查询完为止。 1)scroll搜索会在第一次搜索的时候,保存一个当时的视图快照,之后只会基于该旧的视图快照提供数据搜索,如果这个期间数据变更,是不会 阅读全文
posted @ 2020-04-08 20:53 雷雨客 阅读(878) 评论(0) 推荐(0) 编辑
摘要:1、DocValues说明 DocValues其实是Lucene在构建倒排索引时,会额外建立一个有序的正排索引(基于document=>field value的映射列表)。年龄、日期等非字符型的可以排序,就是因为建立了倒排索引,也建立了正排索引。 DocValues说白了就是正排索引,默认对字符串类 阅读全文
posted @ 2020-04-08 20:08 雷雨客 阅读(1378) 评论(0) 推荐(0) 编辑
摘要:ElasticSearch查询的相关度分数是3部分综合的分数,使用的是TF/IDF算法(Term Frequency&Invest Document Frequency) 1、根据Term Frequency(词条出现频率) 我们查询的文本中的词条在本document中出现了多少次,出现次数越多,相 阅读全文
posted @ 2020-04-08 19:09 雷雨客 阅读(224) 评论(0) 推荐(0) 编辑
摘要:1、准备数据 PUT /lib { "settings":{ "number_of_shards":3, "number_of_replicas":0 }, "mappings":{ "user":{ "properties":{ "name":{"type":"text"}, "address": 阅读全文
posted @ 2020-04-08 15:37 雷雨客 阅读(4953) 评论(0) 推荐(0) 编辑
摘要:1、准备数据 PUT /myindex/article/1 { "post_date":"2018-05-10", "title":"Java", "content":"java is the best language", "author_id":119 } PUT /myindex/articl 阅读全文
posted @ 2020-04-08 13:13 雷雨客 阅读(1282) 评论(0) 推荐(0) 编辑
摘要:请看下面两种分页查询的示例:from是从第几个文档开始查询,size是查几个文档 GET /lib/user/_search?from=0&size=3 GET /lib/user/_search { "from":0, "size":2, "query":{ "terms":{ "interest 阅读全文
posted @ 2020-04-08 12:12 雷雨客 阅读(183) 评论(0) 推荐(0) 编辑
摘要:1、查询lib索引下类型是user,id是1的文档 GET /lib/user/1 2、查询所有索引下的文档 GET _search 3、查询lib索引下的文档 GET /lib/_search 4、查询lib、lib2索引下的文档 GET /lib,lib2/_search 5、查询以3和4结尾的 阅读全文
posted @ 2020-04-07 19:12 雷雨客 阅读(2152) 评论(0) 推荐(0) 编辑
摘要:1、准备数据 PUT /lib { "settings":{ "number_of_shards":3, "number_of_replicas":0 }, "mappings":{ "user":{ "properties":{ "name":{"type":"text"}, "address": 阅读全文
posted @ 2020-04-07 18:50 雷雨客 阅读(1222) 评论(0) 推荐(0) 编辑
摘要:1、bulk的格式: {action:{metadata}}\n {requestbody}\n 2、为什么不使用如下格式: [ { "action":{}, "data":{} } ] 这种方式可读性好,但是内部处理就麻烦了:耗费更多内存,增加java虚拟机开销 1)将json数组解析为JSONA 阅读全文
posted @ 2020-04-07 11:42 雷雨客 阅读(495) 评论(0) 推荐(0) 编辑
摘要:文档查询内部原理 文档查询内部原理与文档增删改类似,但是查询可以转发到副本上请求数据。 第一步:查询请求发给任意一个节点,该节点就成了coordinating node,该节点使用路由算法算出文档所在的primary shard。 第二步:协调节点把请求转发给primary shard也可以转发给r 阅读全文
posted @ 2020-04-07 11:24 雷雨客 阅读(229) 评论(0) 推荐(0) 编辑
摘要:1、任何一个增删改操作都可以跟上一个参数consistency PUT /myindex/article/4?consistency=one { "post_date":"2018-05-18", "title":"Java", "content":"java is the best languag 阅读全文
posted @ 2020-04-07 11:01 雷雨客 阅读(520) 评论(0) 推荐(0) 编辑
摘要:1、发送增删改请求时,可以选择任意一个节点,该节点就成了协调节点(coordinating node) 2、协调节点使用路由算法进行路由,然后将请求转到primary shard所在节点,该节点处理请求,并把数据同步到它的replica shard 3、协调节点对客户端做出响应 阅读全文
posted @ 2020-04-07 10:07 雷雨客 阅读(217) 评论(0) 推荐(0) 编辑
摘要:1、文档路由: 一个索引由多个分片构成,当添加(删除,修改)一个文档时,es就需要决定这个文档存储在哪个分片上,这个过程就称为数据路由(routing)。 2、路由算法: shard=hash(routing) % number_of_primary_shards 示例:一个索引,3个primary 阅读全文
posted @ 2020-04-07 10:05 雷雨客 阅读(319) 评论(0) 推荐(0) 编辑
摘要:重新获取文档数据和版本信息进行更新操作 POST /lib/user/4/_update?retry_on_conflict=3&version=5 使用post进行文档的更新,当出现并发问题时内部使用的是乐观锁,版本控制version。 使用retry_on_conflict参数,如果当前线程更新 阅读全文
posted @ 2020-04-06 20:07 雷雨客 阅读(677) 评论(1) 推荐(0) 编辑
摘要:1、准备数据 PUT /lib/user/1 { "first_name":"Jane", "last_name":"Smith", "age":32, "about":"I like to collect rock albums", "interests":[ "music" ] } 2、操作演示 阅读全文
posted @ 2020-04-06 19:52 雷雨客 阅读(179) 评论(0) 推荐(0) 编辑
摘要:修改文档内容有两种方式 1、全部替换:相当于添加一个新文档,把原有文档全部覆盖掉,比如要修改一个age,其余字段也要全部指定。 其实是把原文档标记为deleted,又创建了一个新文档,随着数据的增加,es会在合适的时间把标记为deleted的文档删除掉。 PUT /lib/user/1 { "fir 阅读全文
posted @ 2020-04-06 18:16 雷雨客 阅读(1276) 评论(0) 推荐(0) 编辑
摘要:_source元数据分析 其实就是我们在添加文档时request body中的内容,指定返回的结果中含有哪些字段 如:get /index/type/1?_source=name,age,address 阅读全文
posted @ 2020-04-06 17:44 雷雨客 阅读(298) 评论(0) 推荐(0) 编辑