ES系列07:match_phrase与match_phrase_prefix query 昨天为大家介绍了ES系列06:ik分词+Full text queries 之match query。今天TeHero为大家分享Full text queries 的 match_phrase query 和match_phrase_prefix query,同时从倒排序索引原理入手,将DSL语句转化为sql语句,方便大家理解学习。 本文结构【开局一张图】 ps:...
3、match_phrase:短语查询,在match的基础上进一步查询词组,可以指定slop分词间隔。 4、match_phrase_prefix:前缀查询,根据短语中最后一个词组做前缀匹配,可以应用于搜索提示,但注意和max_expanions搭配。其实默认是50… 5、multi_match:多字段查询,使用相当的灵活,可以完成match_phrase和match_phrase_prefix的工作。 1...
2.cache 缓存 filter 类似于 SQL 里面的where 语句,和上面的基础查询比起来,也能实现搜索的功能,同时 filter 可以将查询缓存到内存当中,这样可以大大加大下一次的查询速度 3.4 range 范围查询 gte:大于等于; lt:小于 3.5 短语搜索 match_phrase 找出一个属性中的独立单词是没有问题的,但有时候想要精确匹配一系列...
2.1 match系列查询 2.1.1 准备数据 2.1.2 match(按条件查询) 2.1.3 match_all(查询全部) 2.1.4 match_phrase(短语查询) 2.1.5 match_phrase_prefix(最左前缀查询) 2.1.6 multi_match(多字段查询) 2.1.7 小结 2.2 term查询 1|0前言 跟数据库的数据操作类似,es中的查询才是最复杂和最经常用到的。前面...
1.何为match_parase_query:match_phrase 会将检索关键词分词。match_phrase的分词结果必须在被检索字段的分词中都包含,而且顺序必须相同,而且默认必须都是连续的。2.要实现 & 和 and 查询结果要等价,那么就需要自定义分词器来实现了,定制化的需求3.如何自定义一个分词器:elastic.co/guide/en/ela4.解法1核心...
match_phrase query 首先会把 query 内容分词,分词器可以自定义,同时文档还要满足以下两个条件才会被搜索到: 分词后所有词项都要出现在该字段中(相当于 and 操作)。 字段中的词项顺序要一致。 例如,有以下 3 个文档,使用 match_phrase 查询 “what a wonderful life”,只有前两个文档会被匹配: ...
1.1 multi_match query 对应的sql语句 GET /tehero_index/_doc/_search { "query": { "multi_match": { "query": "系统学", "fields": [ "content.ik_smart_analyzer", "content.ik_max_analyzer" ] } } } DSL执行分析: 1)检索关键词“系统学”,根据搜索的field对应的分词器,进行不同的分词:"...
1.1 multi_match query 对应的sql语句 ET /tehero_index/_doc/_search { "query": { "multi_match": { "query": "系统学", "fields": [ "content.ik_smart_analyzer", "content.ik_max_analyzer" ] } } } image.gif DSL执行分析: 1)检索关键词“系统学”,根据搜索的field对应的分词器,进行不同...
上述DSL对应的sql语句为:【where Token = 系统学 and Token <> 间隔】 4.4 "" 表示对检索词进行 match_phrase query 代码语言:javascript 复制 #4、检索到文档2GET/tehero_index/_doc/_search{"query":{"simple_query_string":{"fields":["content.ik_smart_analyzer"],"query":"\"系统学编程关注\""...
随着使用es场景的增多,工作当中避免不了去使用es进行数据的存储,在数据存储到es当中以后就需要使用DSL语句进行数据的查询、聚合等操作,DSL对SE的意义就像SQL对MySQL一样,学会如何编写查询语句决定了后期是否能完全驾驭ES,所以至关重要,本专题主要是分享常用的DSL语句,拿来即用。