You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Data Elasticsearch 4.4.18中AggregationsContainer无get方法求助

Spring Data Elasticsearch 4.4.18 聚合结果获取适配方案

升级到4.4.18版本后,SearchHits.getAggregations()返回的是AggregationsContainer而非旧版的Aggregations,需要先从容器中提取底层聚合实例再处理。以下是修改后的代码:

import org.springframework.data.elasticsearch.core.AggregationsContainer;
import org.elasticsearch.search.aggregations.Aggregations;
import org.elasticsearch.search.aggregations.bucket.terms.ParsedLongTerms;

import java.util.LinkedHashSet;
import java.util.Set;

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

关键修改点:

  • 新增AggregationsContainer类型接收,通过getAggregations()方法获取底层的org.elasticsearch.search.aggregations.Aggregations实例
  • 调整空判断逻辑:先校验容器是否非空,再校验内部聚合实例是否非空,最后定位目标聚合项
  • 桶遍历、类型转换逻辑与旧版一致,无需额外修改

内容的提问来源于stack exchange,提问作者Andreas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 20:55:14