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

如何用Elasticsearch Java API从JSON字符串构建聚合

解决方案

在Elasticsearch 7.7.0的Rest High Level Client中,你可以使用AggregationBuilders.wrapperAggregation()方法直接将聚合JSON字符串转换为聚合构建器,再添加到SearchSourceBuilder中。

实现步骤

  1. 用AggregationBuilders.wrapperAggregation()包装聚合JSON字符串,生成WrapperAggregationBuilder实例
  2. 通过SearchSourceBuilder的addAggregation()或aggregation()方法将聚合构建器加入查询配置

修改后的完整代码

SearchSourceBuilder searchSourceBuilder(String queryJson, String aggJson) {
    // 构建查询部分
    var queryBuilder = QueryBuilders.wrapperQuery(queryJson);
    // 构建聚合部分
    var wrapperAggBuilder = AggregationBuilders.wrapperAggregation(aggJson);
    
    var builder = new SearchSourceBuilder();
    builder.query(queryBuilder);
    builder.addAggregation(wrapperAggBuilder);
    
    return builder;
}

注意事项

  • 确保聚合JSON格式合法:你提供的示例中prices_range_200_240_avg的聚合类型写错了,应该是avg而非sum,修正后的聚合JSON如下:
{
  "prices_range_200_240_sum": {
    "sum": {
      "field": "currentListPrice"
    }
  },
  "prices_range_200_240_avg": {
    "avg": {
      "field": "currentListPrice"
    }
  }
}
  • 该方法支持直接传入包含多个聚合的完整JSON对象,无需拆分单个聚合逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 13:05:37