摘要: 主要知识点: 基于multi_match语法实现dis_max+tie_breaker 1、best_fields+tie_breaker GET /forum/article/_search { "query": { "multi_match": { "query": "java solution", "type":"be... 阅读全文
posted @ 2018-02-28 19:29 outback123 阅读(452) 评论(0) 推荐(0) 编辑
摘要: 主要知识点: tie_breaker的使用原因和使用方法 一、tie_breaker的使用原因 dis_max,只是取分数最高的那个query的分数而已,完全不考虑其他query的分数,这种一刀切的做法,可能导致在有其他query的影响下,score不准确的情况,这时为了使用结果更准确,最好还是要考虑到其他query的影响, 二、tie_breaker... 阅读全文
posted @ 2018-02-28 19:03 outback123 阅读(2303) 评论(0) 推荐(2) 编辑
摘要: 主要知识点 常规multi-field搜索结果分析 dis_max参数设置 一、为帖子数据增加content字段 POST /forum/article/_bulk { "update": { "_id": "1"} } { "doc" : {"content" : "i like to write best elasticsearch article"} } ... 阅读全文
posted @ 2018-02-28 18:49 outback123 阅读(1318) 评论(1) 推荐(0) 编辑
摘要: 主要知识点 多shard场景下relevence score可能不准确的原因 多shard场景下relevence score可能不准确解决方式 一、多shard场景下relevance score不准确的原因 如果你个index有多个shard的话,可能搜索结果的排序会不准确。主要原因是TF/IDF的算法,es在计算IDF值时,默认只会计算当前shard的ID... 阅读全文
posted @ 2018-02-28 17:37 outback123 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 主要知识点: 学会在should中使用boost进行权重控制 假如现在有一个需求:要把should中某些字段优先显示, 1、不加boost权重控制 GET /forum/article/_search { "query": { "bool": { "must": [{"match": {"title": "blog"}}], "... 阅读全文
posted @ 2018-02-28 17:10 outback123 阅读(319) 评论(0) 推荐(0) 编辑
摘要: 主要知识点: 1、全文检索的时候,进行多个值的检索,有两种做法,match query;should 2、控制搜索结果精准度:and operator,minimum_should_match 1、准备数据:为帖子数据增加标题字段 POST /forum/article/_bulk { "update": { "_id": "1"} } { "doc" : {"tit... 阅读全文
posted @ 2018-02-28 16:24 outback123 阅读(272) 评论(0) 推荐(0) 编辑
摘要: 主要知识点 掌握range filter的用法 range filter就是查找一个范围内的数据,相当于sql中的betwen语法,以下是几个示例: 1、为帖子数据增加浏览量的字段 POST /forum/article/_bulk { "update": { "_id": "1"} } { "doc" : {"view_cnt" : 30} } { "upd... 阅读全文
posted @ 2018-02-28 15:38 outback123 阅读(1232) 评论(0) 推荐(0) 编辑
摘要: 主要知识点 terms搜索多个值,并和term的比较 一、term和terms terms是在这个字段中搜索多个值,相当于sql中的in语法 (select * from tbl where col in ("value1", "value2")) term: {"field": "value"} terms: {"field": ["value1", "value... 阅读全文
posted @ 2018-02-28 12:26 outback123 阅读(303) 评论(0) 推荐(0) 编辑
摘要: 主要知识: 学习bool组合查询 bool嵌套 1、搜索发帖日期为2017-01-01,或者帖子ID为XHDK-A-1293-#fJ3的帖子,同时要求帖子的发帖日期绝对不为2017-01-02 sql语句:select * from forum.article where (post_date='2017-01-01' or article_id='XHDK-A-1293-... 阅读全文
posted @ 2018-02-28 11:48 outback123 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 主要知识点: 一次filter执行顺序 filter和query的特点 一、一次filter执行顺序 1、在倒排索引中查找搜索串,获取document list 以一下date数据来举例 worddoc1doc2doc3 2017-01-01... 阅读全文
posted @ 2018-02-28 10:50 outback123 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 主要知识点 根据用户ID、是否隐藏、帖子ID、发帖日期来搜索帖子 一、准备数据 1、插入一些测试帖子数据 POST /forum/article/_bulk { "index": { "_id": 1 }} { "articleID" : "XHDK-A-1293-#fJ3", "userID" : 1, "hidden": false, "postDate": "2017... 阅读全文
posted @ 2018-02-28 09:59 outback123 阅读(412) 评论(0) 推荐(0) 编辑