Elasticsearch 度量(Metric)聚合详解及示例

Elasticsearch 提供了强大的聚合功能,允许用户对数据进行深入的统计分析。度量(Metric)聚合是其中一种,它用于对数值型数据进行计算,如求和、平均值、最大值、最小值等。本文将详细介绍 Elasticsearch 的度量聚合,并提供完整的示例和解释。

度量聚合基础

度量聚合用于执行数值计算,它可以帮助我们快速获得数据集的关键统计信息。常见的度量聚合包括:

  • Avg:计算平均值。
  • Sum:计算总和。
  • Min:找出最小值。
  • Max:找出最大值。
  • Stats:同时计算多个度量指标,如最大值、最小值、平均值和总和。

示例:Stats 聚合

假设我们有一个酒店数据索引,我们想要计算每个酒店品牌的用户评分的最小值、最大值和平均值。

DSL 查询

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

解释

  • size: 0 表示我们不需要原始文档的列表,只关心聚合结果。
  • aggs:定义聚合的区域。
  • brandAgg:为聚合操作定义的名称,这里使用了 Terms 聚合按品牌分组。
  • terms:指定聚合类型为词条聚合,field 指定聚合字段为 brandsize 限制返回的品牌数量。
  • score_stats:在 Brands 聚合内部定义的子聚合,用于计算评分统计。
  • stats:聚合类型,用于计算 score 字段的多个统计指标。

嵌套度量聚合

度量聚合可以嵌套在其他聚合内部,例如在桶聚合内部计算每个桶的度量指标。

DSL 查询

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

解释

  • order:指定 Bucket 聚合结果的排序方式,这里按照 _count 升序排列。
  • scoreAgg:在 Brands 聚合内部定义的另一个子聚合,用于计算每个品牌评分的统计数据。

结语

度量聚合是 Elasticsearch 中进行数值计算的重要工具。通过本篇文章的示例和解释,你应该对如何使用度量聚合有了更深入的理解。无论是计算平均评分、总和、最大值还是最小值,度量聚合都能提供灵活且强大的支持。掌握度量聚合的使用,将有助于你更有效地进行数据分析和探索。希望本文能够帮助你在实际项目中更好地利用 Elasticsearch 的聚合功能。

相关推荐
Elasticsearch35 分钟前
如何使用 Agent Builder 排查 Kubernetes Pod 重启和 OOMKilled 事件
elasticsearch
Elasticsearch1 天前
通用表达式语言 ( CEL ): CEL 输入如何改进 Elastic Agent 集成中的数据收集
elasticsearch
武子康1 天前
大数据-236 离线数仓 - 会员指标验证、DataX 导出与广告业务 ODS/DWD/ADS 全流程
大数据·后端·apache hive
武子康2 天前
大数据-235 离线数仓 - 实战:Flume+HDFS+Hive 搭建 ODS/DWD/DWS/ADS 会员分析链路
大数据·后端·apache hive
DianSan_ERP3 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
够快云库3 天前
能源行业非结构化数据治理实战:从数据沼泽到智能资产
大数据·人工智能·机器学习·企业文件安全
AI周红伟3 天前
周红伟:智能体全栈构建实操:OpenClaw部署+Agent Skills+Seedance+RAG从入门到实战
大数据·人工智能·大模型·智能体
B站计算机毕业设计超人3 天前
计算机毕业设计Django+Vue.js高考推荐系统 高考可视化 大数据毕业设计(源码+LW文档+PPT+详细讲解)
大数据·vue.js·hadoop·django·毕业设计·课程设计·推荐算法
计算机程序猿学长3 天前
大数据毕业设计-基于django的音乐网站数据分析管理系统的设计与实现(源码+LW+部署文档+全bao+远程调试+代码讲解等)
大数据·django·课程设计
B站计算机毕业设计超人3 天前
计算机毕业设计Django+Vue.js音乐推荐系统 音乐可视化 大数据毕业设计 (源码+文档+PPT+讲解)
大数据·vue.js·hadoop·python·spark·django·课程设计