NotQueryBuilder弹性搜索2.4执行模式 [英] NotQueryBuilder elasticsearch 2.4 execution modes

查看:191
本文介绍了NotQueryBuilder弹性搜索2.4执行模式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

  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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆