Elasticsearch 桶(Bucket)聚合详解及示例

在 Elasticsearch 中,桶(Bucket)聚合是一种强大的工具,它允许我们对数据进行分组并统计每组的数量。这种聚合类型对于理解数据的分布和进行分组统计非常有用。本文将详细介绍 Elasticsearch 的桶聚合,并提供完整的示例和解释。

桶聚合基础

桶聚合通过将数据分入不同的桶中来工作。每个桶代表一个分组,分组的依据可以是字段值、日期范围或其他标准。Elasticsearch 中常见的桶聚合包括:

  • Terms Aggregation:基于字段的词条值进行分组。
  • Date Histogram Aggregation:基于日期的范围进行分组。

聚合的必要元素

  • 聚合名称:为聚合定义的名称,用于在结果中标识。
  • 聚合类型 :指定使用的聚合类型,如 terms
  • 聚合字段:指定聚合应用的字段。

聚合的可配置属性

  • size:指定返回的桶数量。
  • order :指定桶的排序方式,可以是基于 _count(每个桶中的文档数量)或其他度量聚合。
  • field:参与聚合的字段。

示例:Terms Aggregation

假设我们有一个酒店数据索引,我们想要统计不同酒店品牌的分布情况。

DSL 查询

json 复制代码
GET /hotel/_search
{
  "size": 0,
  "aggs": {
    "brandAgg": {
      "terms": {
        "field": "brand",
        "size": 10
      }
    }
  }
}

解释

  • size: 0 表示我们不需要原始文档的列表,只关心聚合结果。
  • aggs:定义聚合的区域。
  • brandAgg:为聚合操作定义的名称。
  • terms:指定聚合类型为词条聚合。
  • field: "brand":指定聚合字段为 brand
  • size: 10:限制返回的桶数量,这里最多返回 10 个品牌。

桶聚合结果排序

默认情况下,桶聚合结果会根据 _count(桶内的文档数量)降序排序。我们可以修改排序方式:

DSL 查询

json 复制代码
GET /hotel/_search
{
  "size": 0,
  "aggs": {
    "brandAgg": {
      "terms": {
        "field": "brand",
        "order": {
          "_count": "asc"
        },
        "size": 20
      }
    }
  }
}

解释

  • order:指定排序方式,这里设置为按照 _count 升序排列。

桶聚合限定范围

桶聚合可以结合查询条件 query 来限定聚合的文档范围:

DSL 查询

json 复制代码
GET /hotel/_search
{
  "query": {
    "range": {
      "price": {
        "lte": 200
      }
    }
  },
  "size": 0,
  "aggs": {
    "brandAgg": {
      "terms": {
        "field": "brand",
        "size": 20
      }
    }
  }
}

解释

  • query:定义查询条件,这里使用 range 查询来限定价格不超过 200 的文档。
  • 聚合将只针对这些文档进行。

结语

桶聚合是 Elasticsearch 中进行数据分组统计的重要工具。通过本篇文章的示例和解释,你应该对如何使用桶聚合有了更深入的理解。无论是统计不同品牌的数量,还是根据特定条件对数据进行分组,桶聚合都能提供灵活且强大的支持。掌握桶聚合的使用,将有助于你更有效地进行数据分析和探索。希望本文能够帮助你在实际项目中更好地利用 Elasticsearch 的聚合功能。

相关推荐
子榆.8 分钟前
CANN 性能分析与调优实战:使用 msprof 定位瓶颈,榨干硬件每一分算力
大数据·网络·人工智能
新芒19 分钟前
暖通行业两位数下滑,未来靠什么赢?
大数据·人工智能
忆~遂愿1 小时前
CANN ATVOSS 算子库深度解析:基于 Ascend C 模板的 Vector 算子子程序化建模与融合优化机制
大数据·人工智能
艾莉丝努力练剑2 小时前
【Linux:文件】Ext系列文件系统(初阶)
大数据·linux·运维·服务器·c++·人工智能·算法
倒流时光三十年2 小时前
SpringBoot 数据库同步 Elasticsearch 性能优化
数据库·spring boot·elasticsearch
lili-felicity3 小时前
CANN异步推理实战:从Stream管理到流水线优化
大数据·人工智能
2501_933670793 小时前
2026 高职大数据专业考什么证书对就业有帮助?
大数据
xiaobaibai1533 小时前
营销自动化终极形态:AdAgent 自主闭环工作流全解析
大数据·人工智能·自动化
星辰_mya3 小时前
Elasticsearch更新了分词器之后
大数据·elasticsearch·搜索引擎
xiaobaibai1534 小时前
决策引擎深度拆解:AdAgent 用 CoT+RL 实现营销自主化决策
大数据·人工智能