Bool 查询
与其他查询的bool组合相匹配的文档的查询。布尔查询映射到Lucene的BooleanQuery。它使用一个或者多个布尔条件来构建,每个条件都有一个类型出现,出现的类型有:
事件 | 描述 |
must | 子句(查询)必须出现在匹配的文档中,并将有助于得分。 |
filter | 子句(查询)必须出现在匹配的文档中。 然而不像must此查询的分数将被忽略。 |
should | 子句(查询)应出现在匹配文档中。 在布尔查询中不包含must或filter子句,一个或多个should子句必须有相匹配的文件。 匹配should条件的最小数目可通过设置minimum_should_match参数。 |
must_not | 子句(查询)不能出现在匹配的文档中。 |
重要:
Bool在过滤器上下文中查询
如果该查询是在过滤器的上下文中使用,它的should子句则至少有一个should子句需要相匹配
Bool Query 也支持 disable_coord 参数(默认为 false)。基本上,坐标相似性基于文档包含的所有查询项的分数来计算得分因子。 可查阅 Lucene 的 BooleanQuery 了解更多详情。
Bool Query 遵循 more-matches-is-better 的方法,所以每个匹配 must 或 should 条件的分数将被累加在一起,从而将最终 _score 提供给每个文档。
使用bool.filter得分
这种情况下指定的查询如使用filter元素对得分没有影响-得分以返回0 。 分数仅受指定查询的影响。 举例来说,当给定的全部文档status字段包含active属性时,以下所述三个查询返回所有文档 。 第一个查询分配比分0的所有文档,因此需指定为没有进球的查询:
第二个Bool查询包含一个match_all查询,为所有文件分配一个1.0的得分。
第三个constant_score查询的作用与上述第二个例子完全相同。 constant_score查询分配由过滤器所匹配的所有文档一个1.0的得分。
使用命名查询来看看哪些子句匹配
如果你需要知道与 bool 查询返回的所有文档相匹配的此查询中的子句,你可以使用命名查询给每个条件分配一个名称。
Last updated