FilteredQueryBuilder已弃用

A.G*_*A.G 3 elasticsearch

FilteredQueryBuilder和QueryFilterBuilder有什么区别,因为自2.0以来它们都被弃用,而FilteredQueryBuilder的替代java代码也是如此.

 FilteredQueryBuilder filteredQueryBuilder = QueryBuilders.filteredQuery(termsQueryBuilder, null); 
 QueryFilterBuilder queryFilterBuilder = FilterBuilders.queryFilter(esQueryBuilder);
Run Code Online (Sandbox Code Playgroud)

Val*_*Val 5

由于现在已经合并了查询和过滤器,因此这些构造不再有意义.

FilteredQueryBuilder用于创建filtered查询,即由一组过滤器约束的评分查询.FilteredQueryBuilder您现在应该使用而不是使用

  • 一个bool/filter创建使用QueryBuilders.boolQuery().filter(...)
  • 或者如果您需要否定过滤器,则bool/must_not创建使用QueryBuilders.boolQuery().mustNot(...)

QueryFilterBuilder用于创建query过滤器,即过滤后的上下文中的非评分查询.而不是使用QueryFilterBuilder,你现在应该

  • 如果需要和您的查询,请使用bool/must创建QueryBuilders.boolQuery().must(...)的查询
  • 或者如果您需要或您的查询使用bool/should创建的使用 QueryBuilders.boolQuery().should(...)