当前位置: 首页 > 面试题库 >

将弹性搜索从1.4.3迁移到2.4 Java代码

黄和怡
2023-03-14
问题内容

我正在从弹性搜索1.4.3迁移到2.4,并且替换了弹性搜索文档中引用的一段代码,而其他参考则需要替换andFilter?

码:-

  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);


 类似资料:
  • 问题内容: 我正在从elasticsearch1.4.3迁移到2.4,并替换了elasticsearch文档中引用的一段代码,而其他参考则需要替换andFilter? 码:- 问题答案: 您可以这样做:

  • 我在将Ruby SDK从Amadeus Flight低价搜索迁移到Flight Offers搜索时遇到了问题 我目前正在为我的学生项目使用Ruby SDK,刚刚收到Amadeus Flight Low fare Search迁移到Flight Offers Search的通知。 它看起来像SDKendpointamadeus。购物班机报价。get()仍将使用低价搜索,而不是航班优惠。 我尝试更新我

  • 我目前正在运行elastic search和kibana 7.0.0版,在我的项目中有一个docker compose文件 我能够连接到端口5601上的kibana(索引和搜索数据),以及端口9200上的弹性搜索。 我试图使用NEST连接到弹性这里是我的基本配置 当我通过NEST执行任何命令时,如ping、健康检查或搜索等,我检索到以下异常。这让我相信docker容器(linux容器)中存在一些与

  • 我使用Elasticsearch允许用户输入要搜索的术语。例如,我要搜索以下属性'name': 如果使用以下代码搜索或,我希望返回此文档。 我尝试过做一个bool must和做多个术语,但它似乎只有在整个字符串都匹配的情况下才起作用。 所以我真正想做的是,这个词是否以任何顺序包含两个词。 有人能帮我走上正轨吗?我已经在这上面砸了一段时间了。

  • 我使用的是spring数据elasticsearch(4.0版)。现在,我需要将rest高级客户端的搜索结果转换为POJO对象。 我会使用杰克逊图书馆的ObjectMapper。我相信有更好的方法来做到这一点。 Spring data elasticsearch now(4.0版)使用MappingElasticsearchConverter。不幸的是,我不知道如何做到这一点-我没有看到任何相关文

  • 当我执行ps-aef grep elasticsearch HeapDumpOnOutOfMemoryError时看到了这一点 501 373 47 1 0 2:29pm ttys004 0:04.14/usr/bin/Java-xms4g-xmx4g-xss256k-djava.awt.headless=true-xx:+useparnewgc-xx:+useparnewgc-xx:+usepa