摘要: 一、root object的理解 就是某个type对应的mapping json,包括properties,metadata(_id,_source,_type),settings(analyzer),其他settings(比如include_in_all等,下例中加黄色的就是root object) PUT /my_index { "mappings": { "... 阅读全文
posted @ 2018-02-26 20:52 outback123 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 一、root object的理解 就是某个type对应的mapping json,包括properties,metadata(_id,_source,_type),settings(analyzer),其他settings(比如include_in_all等,下例中加黄色的就是root object) PUT /my_index { "mappings": { "... 阅读全文
posted @ 2018-02-26 20:52 outback123 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 主要知识点 理解es中的type数据类型 一、type的理解 type是一个index中用来区分类似的数据的,但是可能有不同的fields,而且有不同的属性来控制索引建立、分词器。field的value值在底层的lucene中建立索引的时候,全部是opaque bytes类型,不区分类型的。lucene是没有type的概念的,在document中,实际上将type作为一... 阅读全文
posted @ 2018-02-26 19:59 outback123 阅读(16131) 评论(1) 推荐(1) 编辑
摘要: 主要知识点 索引CUD 一、创建索引的语法 PUT /my_index { "settings": { ... any settings ... }, "mappings": { "type_one": { ... any mappings ... }, "type_two": { ... any mappings ...... 阅读全文
posted @ 2018-02-26 19:58 outback123 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 主要知识点 修改分词器 手动创建分词器 一、修改分词器 1、默认的分词器standard,主要有以下四个功能 standard tokenizer:以单词边界进行切分 standard token filter:什么都不做 lowercase token filter:将所有字母转换为小写 stop token filer(默认被禁用):移除停用词... 阅读全文
posted @ 2018-02-26 19:58 outback123 阅读(309) 评论(0) 推荐(0) 编辑
摘要: 一、扫描和滚屏 scan(扫描)搜索类型是和scroll(滚屏)API一起使用来从Elasticsearch里高效地取回巨大数量的结果而不需要付出深分页的代价。 1、scroll(滚屏) 一个滚屏搜索允许我们做一个初始阶段搜索并且持续批量从Elasticsearch里拉取结果直到没有结果剩下。这有点像传统数据库里的cursors(游标)。 滚屏搜索会及时制作快... 阅读全文
posted @ 2018-02-26 16:28 outback123 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 一、bouncing results成因及解决方案 bouncing results问题,两个document排序,field值相同;不同的shard上,可能排序不同;每次请求轮询路由到不同的replica shard上;每次页面上看到的搜索结果的排序都不一样。这就是bouncing result的问题,这个问题出现最多的地方就是timestamp进行排序 比如当你使用一... 阅读全文
posted @ 2018-02-26 16:27 outback123 阅读(549) 评论(0) 推荐(0) 编辑
摘要: 1、fetch phbase工作流程 The coordinating node identifies which documents need to be fetched and issues a multiGETrequest to the relevant shards. Each shard loads the documents andenrichesthem,... 阅读全文
posted @ 2018-02-26 15:17 outback123 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 主要知识点: query phase步骤 query phase如何提升性能 一、query phase步骤 一次query phase一般包括以下三个步骤 The query phase consists of the following three steps: The client sends asearchrequest toNode... 阅读全文
posted @ 2018-02-26 14:50 outback123 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 主要知识点 doc values 搜索的时候,要依靠倒排索引;在54小节中写到在聚合排序的时候如果仅仅依靠倒排索引的话是不能得出准确的结果的,需要依靠正排索引,所谓的正排索引,其实就是doc values。 在建立索引的时候,一方面会建立倒排索引,以供搜索用;一方面会建立正排索引,也就是doc values,以供排序,聚合,过滤等操作使用 doc values是... 阅读全文
posted @ 2018-02-26 14:12 outback123 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 主要知识点: TF/IDF算法介绍 查看es计算_source的过程及各词条的分数 查看一个document是如何被匹配到的 一、算法介绍 relevance score算法,简单来说,就是计算出,一个索引中的文本,与搜索文本,他们之间的关联匹配程度。Elasticsearch使用的是 term frequency/inverse document ... 阅读全文
posted @ 2018-02-26 12:01 outback123 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 主要知识点: 对一个field索引两次来解决字符串排序问题 实际程序中,如果对一个query string进行搜索,然后再按这个query string所搜索的string field进行排序的话,结果往往不准确,因为在搜索时是对query string进行分词后再搜索的,分词后的string field就变成多个单词,再排序的话就是按照这些单词的_source进行排序,而... 阅读全文
posted @ 2018-02-26 11:18 outback123 阅读(254) 评论(0) 推荐(0) 编辑
摘要: 主要知识点 默认排序 自定义排序 一、默认排序规则 es在默认情况下,是对搜索结果按照各个结果document的_score降序排序的。 然而,某些情况下,可能没有有用的_score,比如说直接用filter,可用constant_score这种情况下其实并没有真正的排序。 GET /_search { "query" : { "b... 阅读全文
posted @ 2018-02-26 10:30 outback123 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 主要知识点 _validate 假设写了一个很长的搜索语句,在执行这条语句之前应先验证搜索是否合法,是否有错误。 语法: GET /index/type/_validate/query?explain {搜索语句体} 示例 GET /company/employee/_validate/query?explain { "query":{ "math_all":{} ... 阅读全文
posted @ 2018-02-26 10:13 outback123 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 主要知识点: bool组合查询 bool和filter组合查询 bool,filter嵌套查询 直接用filter查询,并以_score排序 一、bool组合查询 GET /website/article/_search { "query": { "bool": { "must": [ { ... 阅读全文
posted @ 2018-02-26 10:01 outback123 阅读(313) 评论(0) 推荐(0) 编辑
摘要: 主要知识点 match all match multi match range query term query terms query exist query 1、match all 查询所有 GET /_search { "query": { "match_all": {} } } 示例: GET /company/employee... 阅读全文
posted @ 2018-02-26 10:00 outback123 阅读(1490) 评论(0) 推荐(0) 编辑
摘要: 主要知识点 1、filter与query用在同一次查询中的语法 2、filter与query使用场景对比 3、二都的性能比较 一、filter与query示例 1、先准备数据 PUT /company/employee/1 { "address": { "country": "china", "province": "guangdong... 阅读全文
posted @ 2018-02-26 08:52 outback123 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 主要知识点 1、Query DSL的理解及基本语法 2、如何组合多个搜索条件 bool 一、Query DSL的理解 Query DSL的查询形式如下: GET /_search { "query": { "match_all": {} } } 在37小节中我们学到到query string 的语法,这里学习另外一种搜索语法, Q... 阅读全文
posted @ 2018-02-26 07:46 outback123 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 主要知识点 1、_search api基本语法 2、http协议中get请求带上request body 一、search api的基本语法 1、GET /_search {所传递的参数} 如果为空就是查所有的数据,为空的话,可以不写{}。 2、GET /index1,index2/type1,type2/_search {所传递的参数} GET /_se... 阅读全文
posted @ 2018-02-26 06:51 outback123 阅读(242) 评论(0) 推荐(0) 编辑