Elasticsearch 聚合基础:terms、avg、sum 等

Elasticsearch 的聚合功能是其强大搜索和分析能力的重要组成部分,它允许用户对存储在索引中的数据执行复杂的分析操作,如计算平均值、求和、分组等。在本文中,我们将深入探讨 Elasticsearch 的聚合基础,特别是 terms、avg 和 sum 聚合的使用。

一、Terms 聚合

Terms 聚合是 Elasticsearch 中最常用的聚合类型之一,它按照某个字段的值进行分组。例如,假设我们有一个酒店数据的索引,并希望按照品牌进行分组,以查看每个品牌的酒店数量。这时,我们可以使用 terms 聚合。

示例查询如下:

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

在这个查询中,我们指定了 size 为 0,表示不返回具体的文档结果,只返回聚合结果。aggs 字段下定义了聚合的名称和类型,brand_terms 是我们给这个聚合起的名字,terms 表示我们要使用 terms 聚合。在 terms 聚合内部,我们指定了要按照 brand 字段进行分组,并且只返回前 10 个品牌。

二、Avg 聚合

Avg 聚合用于计算某个字段的平均值。例如,如果我们想知道每个品牌的酒店平均评分,我们可以在 terms 聚合内部嵌套一个 avg 聚合。

示例查询如下:

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

在这个查询中,我们在 terms 聚合内部又定义了一个名为 avg_score 的 avg 聚合,用于计算每个品牌的酒店平均评分。

三、Sum 聚合

Sum 聚合用于计算某个字段的总和。与 avg 聚合类似,sum 聚合也可以嵌套在 terms 聚合内部使用。

示例查询如下:

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

在这个查询中,我们定义了一个名为 total_rooms 的 sum 聚合,用于计算每个品牌的酒店房间总数。

四、其他聚合

除了 terms、avg 和 sum 聚合之外,Elasticsearch 还提供了许多其他类型的聚合,如 min、max、stats(同时计算 min、max、avg、sum 等)等。这些聚合可以单独使用,也可以嵌套在其他聚合内部使用,以满足复杂的分析需求。

五、总结

Elasticsearch 的聚合功能为用户提供了强大的数据分析能力,可以轻松地按照不同的维度对数据进行分组和计算。通过合理使用 terms、avg、sum 等聚合类型,用户可以快速地获取到所需的分析结果,为业务决策提供有力的支持。

相关推荐
Elastic 中国社区官方博客2 小时前
根据用户行为数据中的判断列表在 Elasticsearch 中训练 LTR 模型
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
点控云4 小时前
点控云智能短信:重构企业与用户的连接,让品牌沟通更高效
大数据·人工智能·科技·重构·外呼系统·呼叫中心
风清再凯5 小时前
04_es原理&filebeat使用
大数据·elasticsearch·搜索引擎
小小王app小程序开发6 小时前
盲盒小程序开发新视角:从用户体验到运营落地的分析拆解
大数据·ux
weixin_525936338 小时前
部分Spark SQL编程要点
大数据·python·sql·spark
wan5555cn8 小时前
当代社会情绪分类及其改善方向深度解析
大数据·人工智能·笔记·深度学习·算法·生活
板凳坐着晒太阳10 小时前
Flink 作业通用优化方案
大数据·flink
补三补四11 小时前
Git 基础操作指南
大数据·git·elasticsearch
Aubrey-J13 小时前
Linux中快速部署Elasticsearch(基础&TLS配置)
linux·服务器·elasticsearch
Elasticsearch13 小时前
Elasticsearch:创建一个定制的 DeepSeek 嵌入推理端点
elasticsearch