elasticsearch AggregationsContainer从Elastic 7更新到8(+Spring 3,JDK 17)

vvppvyoh  于 5个月前  发布在  ElasticSearch
关注(0)|答案(1)|浏览(65)

你好,亲爱的社区,
我已经将Sping Boot 升级到3.1.5,JDK升级到17,ElasticSearch从7.x升级到8.x,现在我遇到的问题是我找不到如何重构聚合的解决方案,它仍然有一个.get(String x)方法在版本4.0.0.RELEASE中,以便它们在我目前使用的spring-data-elasticsearch版本中工作。由于我对ElasticSearch的世界还比较陌生,我还想问一下使用的依赖是否与ES 8兼容?据我所知,ES 8版本中不再使用其余的高级客户端,而是使用java客户端。对吗?我很乐意得到一些帮助!:)

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
  <version>3.1.1</version> <!--Last version is 3.2.0-->
</dependency>
<dependency>
  <groupId>org.springframework.data</groupId>
  <artifactId>spring-data-elasticsearch</artifactId>
  <version>4.3.6</version> <!--Last version is 5.2.0-->
</dependency>
<dependency>
  <groupId>co.elastic.clients</groupId>
  <artifactId>elasticsearch-java</artifactId>
  <version>8.11.1</version> <!--Is last version-->
</dependency>

public static Set<Integer> getAggregations(SearchHits<ElasticSearchArticleDto> search, String aggregation)
  {
    Set<Integer> result = new LinkedHashSet<>();
    if (search.getAggregations() != null && (search.getAggregations()).**get**(aggregation) != null)
    {
      ((ParsedLongTerms) (search.getAggregations()).**get**(aggregation)).getBuckets()
        .forEach(bucket -> result.add(bucket.getKeyAsNumber().intValue()));
    }
    return result;
}

字符串
Sping Boot 3.1.5、Java 17、ES 8升级

nbysray5

nbysray51#

我怀疑这个版本组合会起作用

  • Sping Boot 3.1使用Spring Data Elasticsearch 5.1和Elasticsearch 8.7,Spring 6
  • Spring Data Elasticsearch 4.3是基于Spring 5.3和Elasticsearch 7.15构建的

至于Spring Data Elasticsearch 5上返回的聚合,您必须检查从Elasticsearch库返回的类,Spring Data Elasticsearch在那里不使用自己的类。

相关问题