教程 elasticsearch tutorial

Bucket 聚合

Bucket 聚合用于将文档分组到不同的桶(Bucket)中,根据字段值、范围、日期等条件进行分类统计,是数据分析的核心工具。

1. 常见 Bucket 聚合类型

  • terms:按字段值分组,返回每个值对应的桶
  • range:按数值范围分组
  • date_histogram:按日期区间分组,支持按天、周、月等粒度
  • filters:按多个查询条件分组
  • histogram:按数值区间分组(固定间隔)

2. 示例:按字段分组统计

json
GET /my-index/_search
{
  "size": 0,
  "aggs": {
    "group_by_category": {
      "terms": {
        "field": "category.keyword"
      }
    }
  }
}

`

3. 示例:按日期分组

json
GET /my-index/_search
{
  "size": 0,
  "aggs": {
    "sales_over_time": {
      "date_histogram": {
        "field": "sale_date",
        "calendar_interval": "month"
      }
    }
  }
}

4. 注意事项

  • 聚合字段通常需使用 .keyword 或非分词字段
  • 使用合理的桶大小和间隔,避免返回过多桶,影响性能
  • 可以嵌套使用 Bucket 聚合,实现多级分组

Bucket 聚合使你能够灵活地对数据进行分组和分类统计,助力多维度数据分析和报表制作。