Elasticsearch 2.4中.execution(“and”)的替代方案是什么?以及它的确切用途–
NotFilterBuilder excVariantsFilter = FilterBuilders.notFilter(FilterBuilders.termsFilter("products", productIds.toArray()).execution("and"));
最佳答案
过滤器和查询已在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
生成一个term
查询,其中包含productId
查询,这等效于先前的not
过滤器,其中包含带有 terms
execution mode的and
查询
关于elasticsearch - NotQueryBuilder elasticsearch 2.4执行模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41571400/