欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > 【Elasticsearch】Bucket Correlation Aggregation(桶相关性聚合)

【Elasticsearch】Bucket Correlation Aggregation(桶相关性聚合)

2025/2/13 2:51:48 来源:https://blog.csdn.net/risc123456/article/details/145573259  浏览:    关键词:【Elasticsearch】Bucket Correlation Aggregation(桶相关性聚合)

Elasticsearch中的Bucket Correlation Aggregation(桶相关性聚合)是一种用于分析数据集中不同桶(Bucket)之间相关性的高级聚合功能。它属于兄弟管道聚合(Sibling Pipeline Aggregation),通过在配置的兄弟多桶聚合上执行相关性函数来实现。

核心概念

• 兄弟管道聚合:桶相关性聚合依赖于其他聚合(如`terms`、`range`等)生成的桶数据,然后在这些桶数据上进行相关性分析。

• 相关性分析:用于衡量两个或多个数据集之间的关系强度。例如,可以分析某个字段的不同值(如版本号)与另一个度量(如延迟)之间的相关性。

主要参数

• `buckets_path`:指定包含要相关值的桶的路径。它必须指向一个`_count`度量。

• `function`:定义要执行的相关性函数,目前支持`count_correlation`,用于计算计数相关性。

• `indicator`:定义与桶值相关联的指标,包含以下属性:

• `doc_count`:最初创建`expectations`的文档总数,必须大于或等于`buckets_path`中所有值的总和。

• `expectations`:与桶值相关联的数字数组,其长度必须等于`buckets_path`返回的桶的数量。

• `fractions`(可选):在计算平均值和方差时使用的分数数组,用于处理预计算数据和`buckets_path`之间的已知差距。

使用场景

假设有一个日志数据集,其中包含不同版本的软件(`version`字段)和每个版本的延迟(`latency`字段)。我们希望分析不同版本的软件与延迟之间的相关性,以确定是否存在某个版本导致延迟增加。

示例

以下是一个具体的示例,展示如何使用桶相关性聚合来分析`version`字段与`latency`字段之间的相关性:

查询示例

```json

POST correlate_latency/_search?size=0&filter_path=aggregations

{

  "aggs": {

    "buckets": {

      "terms": {

        "field": "version",

        "size": 2

      },

      "aggs": {

        "latency_ranges": {

          "range": {

            "field": "latency",

            "ranges": [

              { "to": 0.0 },

              { "from": 0, "to": 105 },

              { "from": 105, "to": 225 },

              { "from": 225, "to": 445 },

              { "from": 445, "to": 665 },

              { "from": 665, "to": 885 },

              { "from": 885, "to": 1115 },

              { "from": 1115, "to": 1335 },

              { "from": 1335, "to": 1555 },

              { "from": 1555, "to": 1775 },

              { "from": 1775 }

            ]

          }

        },

        "bucket_correlation": {

          "bucket_correlation": {

            "buckets_path": "latency_ranges>_count",

            "function": {

              "count_correlation": {

                "indicator": {

                   "expectations": [0, 52.5, 165, 335, 555, 775, 1000, 1225, 1445, 1665, 1775],

                   "doc_count": 200

                }

              }

            }

          }

        }

      }

    }

  }

}

```

响应示例

```json

{

  "aggregations" : {

    "buckets" : {

      "doc_count_error_upper_bound" : 0,

      "sum_other_doc_count" : 0,

      "buckets" : [

        {

          "key" : "1.0",

          "doc_count" : 100,

          "latency_ranges" : {

            "buckets" : [

              { "key" : "*-0.0", "to" : 0.0, "doc_count" : 0 },

              { "key" : "0.0-105.0", "from" : 0.0, "to" : 105.0, "doc_count" : 1 },

              { "key" : "105.0-225.0", "from" : 105.0, "to" : 225.0, "doc_count" : 9 },

              { "key" : "225.0-445.0", "from" : 225.0, "to" : 445.0, "doc_count" : 0 },

              { "key" : "445.0-665.0", "from" : 445.0, "to" : 665.0, "doc_count" : 0 },

              { "key" : "665.0-885.0", "from" : 665.0, "to" : 885.0, "doc_count" : 0 },

              { "key" : "885.0-1115.0", "from" : 885.0, "to" : 1115.0, "doc_count" : 10 },

              { "key" : "1115.0-1335.0", "from" : 1115.0, "to" : 1335.0, "doc_count" : 20 },

              { "key" : "1335.0-1555.0", "from" : 1335.0, "to" : 1555.0, "doc_count" : 20 },

              { "key" : "1555.0-1775.0", "from" : 1555.0, "to" : 1775.0, "doc_count" : 20 },

              { "key" : "1775.0-*", "from" : 1775.0, "doc_count" : 20 }

            ]

          },

          "bucket_correlation" : {

            "value" : 0.8402398981360937

          }

        },

        {

          "key" : "2.0",

          "doc_count" : 100,

          "latency_ranges" : {

            "buckets" : [

              { "key" : "*-0.0", "to" : 0.0, "doc_count" : 0 },

              { "key" : "0.0-105.0", "from" : 0.0, "to" : 105.0, "doc_count" : 19 },

              { "key" : "105.0-225.0", "from" : 105.0, "to" : 225.0, "doc_count" : 11 },

              { "key" : "225.0-445.0", "from" : 225.0, "to" : 445.0, "doc_count" : 20 },

              { "key" : "445.0-665.0", "from" : 445.0, "to" : 665.0, "doc_count" : 20 },

              { "key" : "665.0-885.0", "from" : 665.0, "to" : 885.0, "doc_count" : 20 },

              { "key" : "885.0-1115.0", "from" : 885.0, "to" : 1115.0, "doc_count" : 10 },

              { "key" : "1115.0-1335.0", "from" : 1115.0, "to" : 1335.0, "doc_count" : 0 },

              { "key" : "1335.0-1555.0", "from" : 1335.0, "to" : 1555.0, "doc_count" : 0 },

              { "key" : "1555.0-1775.0", "from" : 1555.0, "to" : 1775.0, "doc_count" : 0 },

              { "key" : "1775.0-*", "from" : 1775.0, "doc_count" : 0 }

            ]

          },

          "bucket_correlation" : {

            "value" : -0.5759855613334943

          }

        }

      ]

    }

  }

}

```

 

 

 

响应解析

 

• `buckets`

包含了按`version`字段分组的术语桶(`terms`聚合的结果)。每个术语桶代表一个版本(如`1.0`和`2.0`)。

• `latency_ranges`

每个术语桶中包含一个范围聚合(`range`聚合),用于将`latency`字段的值划分为多个范围。每个范围的`doc_count`表示该范围内文档的数量。

• `bucket_correlation`

每个术语桶中还包含一个桶相关性聚合的结果。`value`字段表示该版本的延迟与预定义的期望值(`expectations`)之间的相关性系数。

示例解析

在上述响应中:

• 版本`1.0`

• 在`latency_ranges`中,延迟分布在不同范围内的文档数量如下:

• `0.0-105.0`:1个文档

• `105.0-225.0`:9个文档

• `885.0-1115.0`:10个文档

• `1115.0-1335.0`:20个文档

• 其他范围的文档数量为0。

• 相关性系数:`0.8402398981360937`,表示该版本的延迟分布与期望值之间存在较强的正相关性。

• 版本`2.0`

• 在`latency_ranges`中,延迟分布在不同范围内的文档数量如下:

• `0.0-105.0`:19个文档

• `105.0-225.0`:11个文档

• `225.0-445.0`:20个文档

• `445.0-665.0`:20个文档

• 其他范围的文档数量为0。

• 相关性系数:`-0.5759855613334943`,表示该版本的延迟分布与期望值之间存在较强的负相关性。

桶相关性聚合的作用

通过桶相关性聚合,可以快速识别出某些版本的软件是否与特定的延迟范围相关联。例如:

• 如果某个版本的延迟分布与期望值高度正相关,可能意味着该版本的软件在某些情况下表现良好。

• 如果某个版本的延迟分布与期望值高度负相关,可能意味着该版本的软件存在性能问题。

这种分析对于性能监控、故障排查和版本优化非常有用。

注意事项

1. 数据预处理

在使用桶相关性聚合之前,需要预先计算`expectations`值。这些值通常是基于历史数据或已知的性能指标计算得出的。

2. 数据量要求

`doc_count`必须大于或等于`buckets_path`中所有值的总和,以确保相关性计算的准确性。

3. 性能影响

桶相关性聚合可能会对查询性能产生一定影响,尤其是在数据量较大时。建议在生产环境中谨慎使用,并根据实际需求优化查询。

通过合理使用桶相关性聚合,可以深入分析数据之间的关系,为数据驱动的决策提供有力支持。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com