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 等聚合类型,用户可以快速地获取到所需的分析结果,为业务决策提供有力的支持。

相关推荐
芯盾时代1 小时前
CIPS系统迎来重大升级
大数据·人工智能·跨境支付·芯盾时代
ManageEngineITSM1 小时前
重构可见性:IT资产管理的下一次觉醒
大数据·人工智能·重构·自动化·itsm·工单系统
佐杰1 小时前
Jenkins是什么
运维·jenkins
计算机编程-吉哥2 小时前
大数据毕业设计项目推荐 基于大数据的广西药店数据可视化分析系统 1.65w条数据【大数据毕业设计项目选题】
大数据·hadoop·毕业设计·计算机毕设·大数据毕业设计选题推荐
门框研究员2 小时前
一次实时采集任务延迟问题的完整复盘(Flink CDC)
大数据·flink
艾莉丝努力练剑2 小时前
【C++:map和set的使用】C++ map/multimap完全指南:从红黑树原理入门到高频算法实战
大数据·开发语言·c++·人工智能·stl·map
汤姆yu2 小时前
基于大数据的全国降水可视化分析预测系统
大数据·开发语言·python
ManageEngineITSM7 小时前
技术的秩序:IT资产与配置管理的现代重构
大数据·运维·数据库·重构·工单系统
一周困⁸天.10 小时前
Elasticsearch+Logstash+Filebeat+Kibana部署【7.1.1版本】
大数据·elk·elasticsearch·jenkins
档案宝档案管理10 小时前
档案宝:企业合同档案管理的“安全保险箱”与“效率加速器”
大数据·数据库·人工智能·安全·档案·档案管理