NotQueryBuilder elasticsearch 2.4执行模式

时间:2017-01-10 14:37:49

标签: elasticsearch

弹性搜索2.4中.execution("和")的替代方法是什么?究竟是什么用途 -

 NotFilterBuilder excVariantsFilter = FilterBuilders.notFilter(FilterBuilders.termsFilter("products", productIds.toArray()).execution("and"));

1 个答案:

答案 0 :(得分:1)

过滤器和查询已在ES 2.0中合并,而execution模式仅在过滤器上下文中有用,因此execution中的terms参数不再需要}查询。

所以,如果你想要一个等效的行为

NotFilterBuilder excVariantsFilter = FilterBuilders.notFilter(FilterBuilders.termsFilter("products", productIds.toArray()).execution("and"));

你现在可以这样写:

BoolQueryBuilder excVariantsFilter = QueryBuilders.boolQuery();
for (String productId : productIds.toArray()) {
    excVariantsFilter.mustNot(QueryBuilders.termQuery("products", productId));
}

它会生成一个bool/must_not个查询,其中包含termproductId查询,该查询等同于包含not查询的前一个terms过滤器and execution mode