elasticsearch的基本查询注释(3) - es查询摘要
ES中对应的DSL如下:
在ES5.x及以上版本中,字符串类型应该设置为关键字或文本类型,根据类型进行精确的值匹配。
进行精确值查询时,可以使用过滤器,因为过滤器执行速度非常快,不会计算相关性(ES会计算查询得分),过滤器查询结果容易缓存。
布尔滤波器组件:
当我们需要多个过滤器时,我们只需要将它们放在bool过滤器的不同部分。
术语是指包括,如下:
姓名包含[“奥尼尔”、“麦迪”]。
返回结果:
范围查询可以提供包含和排除两种范围表达式,可供组合的选项如下:
类似于sql中的范围查询:
ES中对应的DSL如下:
以下sql,age不为空:
ES中对应的DSL如下:
以下sql,age为空:
ES中对应的DSL如下:
注意:缺少的查询在5.x版中不再存在。
匹配包含未分析的前缀字符:
匹配具有与通配符表达式匹配的字段的文档((未分析))。支持的通配符:
1) *匹配任意字符序列(包括空字符序列);
2) ?它匹配任何单个字符。
注意,这个查询可能很慢,因为它需要遍历多个术语。
为了防止非常慢的通配符查询,通配符不能是* * * *或?开始
正则表达式查询允许您使用正则表达式术语进行查询。
例子如下:
注意:匹配*会很慢,需要使用长前缀。
通常都差不多。*?+通配符查询的常规检索性能会很低。
模糊查询在模糊性中指定的最大编辑距离内找到所有可能的匹配,然后检查术语词典,找出要在索引中检索的关键字。
例如:
检索类型为user的索引test_index中的所有信息。但是在es6.x版本中,一个索引只有一种类型,而在未来的es7.x版本中,该类型将被取消,所以这个查询没有意义。
返回指定id的所有信息。
全文检索查询是通过分析器对查询条件进行分析,然后在全文域进行全文查询。
全文搜索取决于在映射中设置的分析器,在映射中使用ik断字符。
所以在查询开发的过程中,我们需要先了解索引的映射,以便选择查询方式。
匹配查询接受的文本/数字/日期类型,分析它们并构造查询。
查询传入参数的分段,搜索具有相同单词的文档。
Match_phrase查询分析文本,并从分析文本创建一个短语查询。
用户已经逐渐习惯于在他们完成输入查询内容之前为他们显示搜索结果,这被称为即时搜索或随键入搜索。
不仅可以让用户在更短的时间内得到搜索结果,我们还可以引导用户在索引中搜索真实的结果。
例如,如果用户输入尊尼获加bl,我们希望在他们完成输入搜索条件之前得到它:尊尼获加黑标和尊尼获加蓝标。
Match_phrase_prefix与Match_phrase相同,只是它允许对文本中的最后一个词进行前缀匹配。