ElasticSearch:组合查询或复合查询

1,156 阅读2分钟

Bool查询

允许在单独的查询中组合任意数量的查询,指定的查询语句表名哪些部分是必须匹配(must)、应该匹配(should)或不能匹配(must_not)

Bool过滤器

和查询功能一致,但是同等情况下,推荐使用过滤器

Range查询和过滤

用于查询介于一定范围之内的值,适用于数字,日期,字符串。

参数
含义
gt 搜索大于某值的字段,不包括该值本身
gte 搜索大于某值的字段,包括该值本身
lt 搜索小于某值的字段,不包括该值本身
lte 搜索小于某值的字段,包括该值本身

使用range查询时,请仔细考虑一下过滤器是否为更好的选择。由于在查询范围之中的文档是二元的匹配(“是的,文档在范围之中”或者“不是,文档不在范围之中”),

range

查询不必是查询。为了获得更好的性能,它应该是过滤器。如果不确定使用查询还是过滤器,请使用过滤器。在99%的用例中,使用range过滤器是正确的选择。

Prefix查询与过滤

和term查询类似,prefix 查询和过滤器允许你根据给定的前缀来搜索词条,这里前缀在搜索之前是没有经过分析的。例如,为了在索引中搜索以“liber” 开头的全部活动。

wildcard查询

字面意思,通配符查询,可使用 *,?来匹配任意字符。

exists过滤器

正如其名,exists 过滤器允许你过滤文档,只查找那些在特定字段有值的文档,无论其值是多少。exists 过滤器看上去是这样的005OiRqWgy1g6gjsa23spj30u70c3n05

missing 过滤器

missing过滤器让你可以搜索字段里没有值,或者是映射时指定的默认值的文档(也叫作null值,即映射里的nul1 value)。 为了搜索缺失reviews字段的文档,可以使用下面这样的过滤器:clipboardclipboawwrd常用案例中使用哪些类型的查询