首页/数据/NoSQL 速查/子聚合与按指标排序
本包目录(322 条)
MongoDB99 条
Elasticsearch89 条
ClickHouse56 条时序与列式28 条选型与架构50 条

子聚合与按指标排序

聚合可以嵌套:外层分桶、内层再做指标或分桶聚合,形成两层统计;用 order 按子聚合结果排序,可以回答按业务指标排前 N 的问题。

NoSQL 速查数据更新于 2026-10-12
结构aggs 里再写 aggs,子聚合只作用于当前桶
排序order: { "子聚合名": "desc" };多级聚合嵌套要注意桶数量爆炸

示例

示例
GET /orders/_search
{
  "size": 0,
  "aggs": {
    "by_country": {
      "terms": {
        "field": "country",
        "size": 5,
        "order": { "avg_price": "desc" }
      },
      "aggs": {
        "avg_price": { "avg": { "field": "price" } }
      }
    }
  }
}
子聚合先在各分片局部计算再合并,terms + 子聚合的组合结果可能有偏差,需要精确值可考虑 composite 分页遍历。

易错点

  • 按子聚合排序时 terms 的 shard_size 会放大,桶多指标多时聚合耗时上升
  • 深层嵌套容易让每个桶组合都计算一遍,组合维度多时先估算桶规模

数据来源与参考

  • Elasticsearch Guide: Aggregations (nested)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌