作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我将两个搜索请求应用于一个过滤器和一个查询,它们在语义上是相同的,如下所示:
static FilterBuilder filter(String field1Value, String field2Value){
return FilterBuilders.boolFilter().must(FilterBuilders.termFilter("field1",field1Value)).should(FilterBuilders.termFilter("field2",field2Value));
}
static QueryBuilder query(String field1Value, String field2Value){
return QueryBuilders.boolQuery().must(QueryBuilders.termQuery("field1",field1Value)).should(QueryBuilders.termQuery("field2",field2Value));
}
client.prepareSearch(indexName).setPostFilter(filter("hello", "world")).setTypes("mytype");
client.prepareSearch(indexName).setQuery(query("hello","world")).setTypes("mytype");
最佳答案
它们并不完全相同。
在带有must子句的 bool(boolean) 查询中,如果查询中没有明确的minimum_should_match,则如果不匹配其中的任何子句,则文档将为匹配项。
在过滤 bool(boolean) 查询中,至少需要满足一个should子句才能将文档视为匹配项。在过滤器中,没有minimum_should_match选项,可以将其视为始终设置为1。
即对于过滤器,它可以如下所示
[must_clause] && [should_clause1 || should_clause_2]
关于elasticsearch - ElasticSearch中的BoolFilter和BoolQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31253795/
我是一名优秀的程序员,十分优秀!