NotQueryBuilder弹性搜索2.4执行模式 [英] NotQueryBuilder elasticsearch 2.4 execution modes
本文介绍了NotQueryBuilder弹性搜索2.4执行模式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
NotFilterBuilder excVariantsFilter = FilterBuilders.notFilter(FilterBuilders.termsFilter(products,productIds.toArray ).execution( 和));
解决方案
过滤器和查询已合并到ES 2.0和执行
模式仅在过滤器上下文中有用,因此执行
参数不再需要c>条款查询。
所以如果你想要一个等同的行为这个
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
查询包含术语
查询每个 productId
,相当于之前的
过滤器包含条款
查询与 和
执行模式
what is the alternative for .execution("and") in elastic search 2.4? and what exactly its usage –
NotFilterBuilder excVariantsFilter = FilterBuilders.notFilter(FilterBuilders.termsFilter("products", productIds.toArray()).execution("and"));
解决方案
Filters and queries have been merged in ES 2.0 and the execution
mode was only useful in a filter context, so there's no need anymore for that execution
parameter in terms
queries.
So if you want an equivalent behavior to this
NotFilterBuilder excVariantsFilter = FilterBuilders.notFilter(FilterBuilders.termsFilter("products", productIds.toArray()).execution("and"));
you can now write it like this:
BoolQueryBuilder excVariantsFilter = QueryBuilders.boolQuery();
for (String productId : productIds.toArray()) {
excVariantsFilter.mustNot(QueryBuilders.termQuery("products", productId));
}
It will produce a bool/must_not
query containing a term
query for each productId
, which is equivalent to the previous not
filter containing a terms
query with and
execution mode
这篇关于NotQueryBuilder弹性搜索2.4执行模式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文