Elasticsearch(ES)中should查询中如何拼接多个and查询呢?
2 个回答
-
在ES中使用
bool
查询来拼接多个条件,可以使用must
、must_not
、should
、filter
等子句,其中must
代表必须匹配,must_not
代表不能匹配,should
代表可选匹配,filter
代表过滤器,不会参与相关度计算。如果想要使用
should
进行多个条件的拼接,可以将多个条件放在一个数组中,ES会将数组中的条件使用OR
进行拼接,即只要满足其中一个条件即可。如果要使用AND
拼接,则需要使用两个或多个should
语句,并将它们放在一个bool
查询中,如下所示:在这个例子中,我们使用了两个
should
语句,并将它们放在一个bool
查询中。这个查询的含义是要求同时满足field1=value1
和field2=value2
这两个条件。由于这两个条件都是should
语句,因此它们之间的关系是AND。需要注意的是,使用多个
should
语句时,查询结果的相关度会受到影响,因为ES会按照每个should
语句的匹配程度进行相关度计算,从而影响最终的排序结果。如果不需要这种相关度计算的影响,可以将多个条件放在一个filter
语句中进行拼接。