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

Elasticsearch按category分组sum聚合结果全部一致问题排查

问题原因

你编写的查询存在2个核心问题,是聚合结果不符合预期的直接原因:

  • 语法错误:terms聚合的field参数中,字段名category未加双引号,不符合JSON语法规范。如果ES使用宽松解析模式,未加引号的字段名会被识别为无效值,导致分组规则失效,sum聚合会统计全量文档的price值,最终每个分组的sum结果都是全量总和18。
  • 不必要的嵌套:外层套了多余的global聚合,如果你没有同时携带query过滤条件,不需要用global聚合包裹terms分组,冗余的嵌套也可能在部分ES版本中引发解析异常。
正确查询写法
{
  "size": 0,
  "aggs": {
    "group_by_category": {
      "terms": {
        "field": "category",
        "size": 10000
      },
      "aggs": {
        "sum_price": {
          "sum": {
            "field": "price"
          }
        }
      }
    }
  }
}

补充说明:size: 0用于关闭原始文档返回,仅返回聚合结果,降低查询开销。

额外排查项

如果修正语法后问题仍然存在,需要检查索引映射:

  • 确认category字段为数值类型(integer/long)或keyword类型,不能是text类型,text类型的分词规则会导致分组混乱
  • 确认category字段不是数组类型,若单个文档的category字段同时包含多个分类值,会导致单文档落入多个分组,sum统计结果异常

内容的提问来源于stack exchange,提问作者Rui Gonçalves

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:36:04