Elasticsearch 聚合概览及示例

Elasticsearch 是一个强大的搜索引擎,除了提供搜索功能外,它还内置了丰富的聚合功能,允许用户对数据进行统计、分析和运算。聚合可以帮助我们理解数据的分布和统计特性,是数据探索和报告的重要工具。本文将介绍 Elasticsearch 中的三种主要聚合类型:桶(Bucket)聚合、度量(Metric)聚合和管道(Pipeline)聚合,并提供示例说明。

桶(Bucket)聚合

桶聚合主要用于对文档进行分组,并统计每组的文档数量。以下是几种常见的桶聚合:

  • TermAggregation:按照文档字段的词条值分组。
  • Date Histogram:按照日期阶梯分组,如按周、月或年分组。

示例:TermAggregation

假设我们有一个酒店预订数据索引,我们可以使用 TermAggregation 来统计每个城市的酒店数量。

json 复制代码
GET /hotel/_search
{
  "size": 0, // 不需要原始文档,只需要聚合结果
  "aggs": {
    "city_buckets": {
      "terms": {
        "field": "city"
      }
    }
  }
}

度量(Metric)聚合

度量聚合用于计算数值类型的字段,例如求平均值、最大值、最小值等。

  • Avg:计算平均值。
  • Max:找出最大值。
  • Min:找出最小值。
  • Stats:同时计算最大值、最小值、平均值和总和。

示例:Avg 和 Stats

继续使用酒店预订数据索引,我们可以计算每个城市酒店的平均价格和价格范围。

json 复制代码
GET /hotel/_search
{
  "size": 0,
  "aggs": {
    "price_stats": {
      "stats": {
        "field": "price"
      }
    },
    "average_price": {
      "avg": {
        "field": "price"
      }
    }
  }
}

管道(Pipeline)聚合

管道聚合是基于其他聚合结果进行的聚合,例如我们可以计算每个城市酒店价格的标准差或累计总和。

  • Derivative:计算相邻文档的度量聚合值的差异。
  • Sum Bucket:计算指定度量聚合的总和。

示例:Sum Bucket

如果我们想要计算所有城市酒店的总价格,然后查看每个城市价格的累计总和,我们可以使用 Sum Bucket 管道聚合。

json 复制代码
GET /hotel/_search
{
  "size": 0,
  "aggs": {
    "total_price": {
      "sum": {
        "field": "price"
      }
    },
    "city_price_sums": {
      "terms": {
        "field": "city"
      },
      "aggs": {
        "cumulative_price": {
          "sum_bucket_selector": {
            "buckets_path": "_price",
            "script": "params.aggregations['total_price'].value"
          }
        }
      }
    }
  }
}

结语

Elasticsearch 的聚合功能为数据分析提供了强大的支持。桶聚合帮助我们对数据进行分组统计,度量聚合让我们可以计算数值字段的各种统计数据,而管道聚合则让我们在其他聚合的基础上进一步分析数据。理解并掌握这些聚合类型,可以帮助我们更深入地洞察数据,为决策提供数据支持。希望本文能够帮助你更好地利用 Elasticsearch 的聚合功能进行数据分析。

相关推荐
青云交1 分钟前
大数据新视界 -- 大数据大厂之 Impala 性能优化:融合机器学习的未来之路(上 (2-1))(11/30)
大数据·计算资源·应用案例·数据交互·impala 性能优化·机器学习融合·行业拓展
Json_181790144803 小时前
An In-depth Look into the 1688 Product Details Data API Interface
大数据·json
Qspace丨轻空间5 小时前
气膜场馆:推动体育文化旅游创新发展的关键力量—轻空间
大数据·人工智能·安全·生活·娱乐
Elastic 中国社区官方博客6 小时前
如何将数据从 AWS S3 导入到 Elastic Cloud - 第 3 部分:Elastic S3 连接器
大数据·elasticsearch·搜索引擎·云计算·全文检索·可用性测试·aws
掘金-我是哪吒6 小时前
微服务mysql,redis,elasticsearch, kibana,cassandra,mongodb, kafka
redis·mysql·mongodb·elasticsearch·微服务
Aloudata7 小时前
从Apache Atlas到Aloudata BIG,数据血缘解析有何改变?
大数据·apache·数据血缘·主动元数据·数据链路
水豚AI课代表7 小时前
分析报告、调研报告、工作方案等的提示词
大数据·人工智能·学习·chatgpt·aigc
研究是为了理解8 小时前
Git Bash 常用命令
git·elasticsearch·bash
拓端研究室TRL10 小时前
【梯度提升专题】XGBoost、Adaboost、CatBoost预测合集:抗乳腺癌药物优化、信贷风控、比特币应用|附数据代码...
大数据
黄焖鸡能干四碗10 小时前
信息化运维方案,实施方案,开发方案,信息中心安全运维资料(软件资料word)
大数据·人工智能·软件需求·设计规范·规格说明书