首页/数据/NoSQL 速查/composite 聚合分页遍历全部桶
Elasticsearch89 条

composite 聚合分页遍历全部桶

composite 聚合把多个维度组合成分页游标:单次返回 size 个桶与 after_key,循环请求可完整遍历所有桶组合,适合对全量维度做导出式统计。

NoSQL 速查数据更新于 2026-10-12
结构sources 数组按顺序组合多个 terms/histogram 维度
翻页响应里的 after_key 作为下一次请求的 after 值
停止条件响应不再包含 after_key 时遍历结束

示例

示例
GET /logs/_search
{
  "size": 0,
  "aggs": {
    "combos": {
      "composite": {
        "size": 1000,
        "sources": [
          { "dt": { "date_histogram": { "field": "@timestamp", "calendar_interval": "day" } } },
          { "status": { "terms": { "field": "status" } } }
        ]
      }
    }
  }
}
# 下一页请求体保留同样结构,另加:
# "after": { "dt": 1719792000000, "status": "open" }
composite 不返回 doc_count 误差提示,分页遍历的结果是完整的桶集合,适合入库后再做二次加工。

易错点

  • after 的字段名必须与 sources 中的名字完全一致,顺序也要对应
  • 并发写入时两次翻页之间数据可能变化,严格一致口径需配合 PIT

数据来源与参考

  • Elasticsearch Guide: Composite aggregation
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌