17 聚合与分析之常用聚合示例

在上一篇文章中,我们对聚合的概念进行了概述,了解了聚合在 Elasticsearch 中的重要性,以及它如何帮助我们从大量数据中提炼出有价值的信息。今天,我们将深入探讨一些常用的聚合示例,并通过案例来展示这些聚合如何在实际应用中发挥作用。

1. 聚合的基本概念回顾

在 Elasticsearch 中,聚合是对存储在索引中的数据进行总结和分析的强大工具。它允许用户在查询中动态地生成统计数据,如求和、计数、平均值等。使用聚合后,用户可以获得更深层次的洞察,帮助决策和策略的制定。

2. 常用聚合示例

以下是一些常用的聚合类型,它们能够帮助我们在不同场景下进行数据分析。

2.1 计数聚合(Count Aggregation)

计数聚合是最简单也最常用的聚合之一,主要功能是统计文档的数量。

示例案例:

假设我们有一个电子商务平台的数据索引 orders,其中包含了所有客户订单的信息。我们想要计算在过去一个月内的订单总数。

1
2
3
4
5
6
7
8
9
10
11
GET /orders/_search
{
"size": 0,
"aggs": {
"total_orders": {
"value_count": {
"field": "order_id"
}
}
}
}

在这个查询中,我们使用了 value_count 聚合来统计 order_id 字段的数量,这样我们就能得知在指定时间范围内的总订单数。

2.2 求和聚合(Sum Aggregation)

求和聚合可以计算某个数值字段的总和,适用于财务数据、销售额等场景。

示例案例:

继续以 orders 索引为例,我们想要计算所有订单的总金额。

1
2
3
4
5
6
7
8
9
10
11
GET /orders/_search
{
"size": 0,
"aggs": {
"total_value": {
"sum": {
"field": "order_value"
}
}
}
}

这里,我们使用了 sum 聚合来求 order_value 字段的总和,轻松得到最近销售的总金额。

2.3 平均值聚合(Avg Aggregation)

平均值聚合计算某个数值字段的平均值,通常用于分析数据趋势。

示例案例:

如果我们希望获取每个订单的平均值,可以使用如下查询:

1
2
3
4
5
6
7
8
9
10
11
GET /orders/_search
{
"size": 0,
"aggs": {
"average_value": {
"avg": {
"field": "order_value"
}
}
}
}

这个查询将返回所有订单的 order_value 的平均值,帮助我们了解客户的消费习惯。

2.4 最大值与最小值聚合(Max & Min Aggregation)

最大值和最小值聚合用于获取数据集中某字段的最大值和最小值。这在寻找异常值或分析数据分布时非常有用。

示例案例:

例如,我们可以获取所有订单中的最大和最小订单价值:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
GET /orders/_search
{
"size": 0,
"aggs": {
"max_value": {
"max": {
"field": "order_value"
}
},
"min_value": {
"min": {
"field": "order_value"
}
}
}
}

这将返回两个聚合结果,分别是最大和最小订单金额,有助于分析销售的极端情况。

2.5 直方图聚合(Histogram Aggregation)

直方图聚合可以将数值数据分组,并针对每组计算文档数量,非常适合用于展示时间序列数据。

示例案例:

以每天的订单数量为例,我们可以按天对订单进行分组,获取每天的订单数量:

1
2
3
4
5
6
7
8
9
10
11
12
GET /orders/_search
{
"size": 0,
"aggs": {
"orders_over_time": {
"histogram": {
"field": "order_date",
"interval": "1d"
}
}
}
}

在这一查询中,我们将 order_date 字段按照一天(1d)的间隔进行分组,得到每一天的订单数量,便于我们分析销售趋势。

2.6 分组聚合(Terms Aggregation)

分组聚合通过对某字段进行分组统计文档数,通常用于分析类别或标签的数据。

示例案例:

如果我们想要统计每种商品的订单数量,可以使用分组聚合:

1
2
3
4
5
6
7
8
9
10
11
GET /orders/_search
{
"size": 0,
"aggs": {
"orders_by_product": {
"terms": {
"field": "product_id"
}
}
}
}

在这里,terms 聚合用于对 product_id 分组,从而统计每种商品的订单数量。

3. 小结

通过上述示例,我们展示了 Elasticsearch 中一些常用的聚合类型及其应用实例。聚合不仅能够帮助我们汇总数据、分析趋势,还能为我们的决策提供坚实的数据基础。接下来,我们将在下一篇文章中关注 分析功能,进一步探讨如何对聚合后的数据进行更深层次的分析,以便深入理解数据背后的含义。

希望本篇教程对于掌握 Elasticsearch 的聚合特性有所帮助。如果你对聚合过程有任何疑问或需要更多示例,请随时反馈,我们将乐意为你解答。

17 聚合与分析之常用聚合示例

https://zglg.work/elasticsearch-zero/17/

作者

IT教程网(郭震)

发布于

2024-08-15

更新于

2024-08-16

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论