将弹性搜索从1.4.3迁移到2.4 java代码
我正在从弹性搜索1.4.3迁移到2.4和 替换弹性搜索文档中引用的代码段和其他引用是否需要替换andFilter 代码:-将弹性搜索从1.4.3迁移到2.4 java代码,java,
elasticsearch,Java,
elasticsearch,我正在从弹性搜索1.4.3迁移到2.4和 替换弹性搜索文档中引用的代码段和其他引用是否需要替换andFilter 代码:- TermQueryBuilder incPlatformFilter=QueryBuilders.termQuery(IdxSchemaConstants.FULL_OFFER_ACTION_INCLUSIVE_PLATFORMS, platformId); //For MissingQuerybuilder //MissingFilterBuilder in
TermQueryBuilder incPlatformFilter=QueryBuilders.termQuery(IdxSchemaConstants.FULL_OFFER_ACTION_INCLUSIVE_PLATFORMS, platformId);
//For MissingQuerybuilder
//MissingFilterBuilder incPlatformEmptyFilter = FilterBuilders.missingFilter(IdxSchemaConstants.FULL_OFFER_ACTION_INCLUSIVE_PLATFORMS);
BoolQueryBuilder incPlatformEmptyFilter = new BoolQueryBuilder().mustNot(new ExistsQueryBuilder(IdxSchemaConstants.FULL_OFFER_ACTION_INCLUSIVE_PLATFORMS));
//NotFilterBuilder
//NotFilterBuilder excPlatformFilter = FilterBuilders.notFilter(FilterBuilders.termFilter(IdxSchemaConstants.FULL_OFFER_ACTION_EXCLUSIVE_PLATFORMS, platformId));
TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery(IdxSchemaConstants.FULL_OFFER_ACTION_EXCLUSIVE_PLATFORMS, platformId);
BoolQueryBuilder excPlatformFilter = new BoolQueryBuilder().mustNot(termQueryBuilder);
QueryBuilder platformPartialMatched = QueryHelper.andFilterBuilders(excPlatformFilter, incPlatformEmptyFilter);
public class QueryHelper {
public static QueryBuilder andFilterBuilders(QueryBuilder... filterBuilders) {
QueryBuilder filterBuilder = null;
if (filterBuilders != null && filterBuilders.length > 0) {
filterBuilder = QueryBuilders.andFilter(filterBuilders);
}
return filterBuilder;}
}
您可以这样做:
TermQueryBuilder incPlatformFilter = QueryBuilders.termQuery(IdxSchemaConstants.FULL_OFFER_ACTION_INCLUSIVE_PLATFORMS, platformId);
//For MissingQuerybuilder
//MissingFilterBuilder incPlatformEmptyFilter = FilterBuilders.missingFilter(IdxSchemaConstants.FULL_OFFER_ACTION_INCLUSIVE_PLATFORMS);
BoolQueryBuilder incPlatformEmptyFilter = new BoolQueryBuilder().mustNot(new ExistsQueryBuilder(IdxSchemaConstants.FULL_OFFER_ACTION_INCLUSIVE_PLATFORMS));
//NotFilterBuilder
//NotFilterBuilder excPlatformFilter = FilterBuilders.notFilter(FilterBuilders.termFilter(IdxSchemaConstants.FULL_OFFER_ACTION_EXCLUSIVE_PLATFORMS, platformId));
TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery(IdxSchemaConstants.FULL_OFFER_ACTION_EXCLUSIVE_PLATFORMS, platformId);
BoolQueryBuilder excPlatformFilter = new BoolQueryBuilder().mustNot(termQueryBuilder);
// ==> use a bool/filter to replace the "and" query <<==
QueryBuilder platformPartialMatched = QueryBuilders.boolQuery()
.filter(excPlatformFilter)
.filter(incPlatformEmptyFilter);
TermQueryBuilder incPlatformFilter=QueryBuilders.termQuery(IdxSchemaConstants.FULL\u OFFER\u ACTION\u INCLUSIVE\u platformId);
//因为缺少QueryBuilder
//MissingFilterBuilder incPlatformEmptyFilter=FilterBuilders.missingFilter(IdxSchemaConstants.FULL\u OFFER\u ACTION\u INCLUSIVE\u PLATFORMS);
BoolQueryBuilder incPlatformEmptyFilter=new BoolQueryBuilder().mustNot(新的ExistsQueryBuilder(IdxSchemaConstants.FULL_OFFER_ACTION_INCLUSIVE_PLATFORMS));
//NotFilterBuilder
//NotFilterBuilder excPlatformFilter=FilterBuilders.notFilter(FilterBuilders.termFilter(IdxSchemaConstants.FULL_OFFER_ACTION_EXCLUSIVE_platformId));
TermQueryBuilder TermQueryBuilder=QueryBuilders.termQuery(IdxSchemaConstants.FULL\u OFFER\u ACTION\u EXCLUSIVE\u platformId平台);
BoolQueryBuilder explatformfilter=new BoolQueryBuilder().mustNot(termQueryBuilder);
//==>使用布尔/过滤器替换“和”查询您可以这样做:
TermQueryBuilder incPlatformFilter = QueryBuilders.termQuery(IdxSchemaConstants.FULL_OFFER_ACTION_INCLUSIVE_PLATFORMS, platformId);
//For MissingQuerybuilder
//MissingFilterBuilder incPlatformEmptyFilter = FilterBuilders.missingFilter(IdxSchemaConstants.FULL_OFFER_ACTION_INCLUSIVE_PLATFORMS);
BoolQueryBuilder incPlatformEmptyFilter = new BoolQueryBuilder().mustNot(new ExistsQueryBuilder(IdxSchemaConstants.FULL_OFFER_ACTION_INCLUSIVE_PLATFORMS));
//NotFilterBuilder
//NotFilterBuilder excPlatformFilter = FilterBuilders.notFilter(FilterBuilders.termFilter(IdxSchemaConstants.FULL_OFFER_ACTION_EXCLUSIVE_PLATFORMS, platformId));
TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery(IdxSchemaConstants.FULL_OFFER_ACTION_EXCLUSIVE_PLATFORMS, platformId);
BoolQueryBuilder excPlatformFilter = new BoolQueryBuilder().mustNot(termQueryBuilder);
// ==> use a bool/filter to replace the "and" query <<==
QueryBuilder platformPartialMatched = QueryBuilders.boolQuery()
.filter(excPlatformFilter)
.filter(incPlatformEmptyFilter);
TermQueryBuilder incPlatformFilter=QueryBuilders.termQuery(IdxSchemaConstants.FULL\u OFFER\u ACTION\u INCLUSIVE\u platformId);
//因为缺少QueryBuilder
//MissingFilterBuilder incPlatformEmptyFilter=FilterBuilders.missingFilter(IdxSchemaConstants.FULL\u OFFER\u ACTION\u INCLUSIVE\u PLATFORMS);
BoolQueryBuilder incPlatformEmptyFilter=new BoolQueryBuilder().mustNot(新的ExistsQueryBuilder(IdxSchemaConstants.FULL_OFFER_ACTION_INCLUSIVE_PLATFORMS));
//NotFilterBuilder
//NotFilterBuilder excPlatformFilter=FilterBuilders.notFilter(FilterBuilders.termFilter(IdxSchemaConstants.FULL_OFFER_ACTION_EXCLUSIVE_platformId));
TermQueryBuilder TermQueryBuilder=QueryBuilders.termQuery(IdxSchemaConstants.FULL\u OFFER\u ACTION\u EXCLUSIVE\u platformId平台);
BoolQueryBuilder explatformfilter=new BoolQueryBuilder().mustNot(termQueryBuilder);
//==>使用bool/filter替换“and”查询意味着应该删除另一个具有方法和FilterBuilder的QueryHelper类?这是一个自定义帮助器类,似乎不再需要它了。但是如果我想替换,或者过滤器QueryBuilder platformPartialMatched=QueryBuilders.boolQuery().filter(excPlatformFilter).filter(incPlatformEmptyFilter);代码是什么?使用.should(…)
而不是.filter(…)
我用上面的代码missingQueryBuilder代替MissingQueryFilter和NotQueryBuilder代替NotQueryFilter,对吗?这意味着应该删除另一个拥有方法和FilterBuilder的类QueryHelper?这是一个自定义帮助器类,似乎不再需要它了。但是,它的共同点是什么de如果我想或筛选器QueryBuilder platformPartialMatched=QueryBuilders.boolQuery().filter(excPlatformFilter).filter(incPlatformEmptyFilter);代码是什么?使用。应该(…)
而不是。filter(…)
我使用的上述代码是missingQueryBuilder代替MissingQueryFilter和NotQueryBuilder代替NotQueryFilter,它们是否正确?