【Elasticsearch】Bucket Count K-S Test 聚合

news/2025/2/12 18:07:56/

Bucket Count K-S Test是 Elasticsearch 中的一种兄弟管道聚合(sibling pipeline aggregation),用于执行双样本柯尔莫哥洛夫-斯米尔诺夫检验(Kolmogorov-Smirnov Test,简称 K-S 检验)。这种聚合主要用于比较两个分布之间的差异,具体来说,是通过比较兄弟聚合中的文档计数分布与一个已知分布(如均匀分布或预定义的分布)来实现的。

工作原理

• 兄弟聚合:Bucket Count K-S Test 是一种兄弟管道聚合,这意味着它依赖于另一个聚合(如`range`聚合或`terms`聚合)的结果。兄弟聚合会生成一系列的桶(buckets),每个桶包含一组文档的计数。

• K-S 检验:K-S 检验是一种统计方法,用于比较两个分布是否来自同一总体。Bucket Count K-S Test 通过计算兄弟聚合生成的文档计数分布与预定义分布之间的差异来评估它们的相似性。

• 参数配置:

• `buckets_path`:指定兄弟聚合中包含文档计数的路径,通常是`range`聚合或`terms`聚合的`_count`。

• `alternative`:定义 K-S 检验的替代假设,可选值为`less`、`greater`或`two_sided`,默认为所有可能的替代假设。

• `fractions`:定义用于比较的分布,默认为均匀分布。

• `sampling_method`:指定抽样方法,可选值为`upper_tail`、`uniform`或`lower_tail`,默认为`upper_tail`。

使用场景

Bucket Count K-S Test 适用于以下场景:

• 性能分析:通过比较不同版本的软件或系统在延迟分布上的差异,评估性能改进。

• 质量控制:检测生产数据中是否存在异常分布,例如,通过比较实际数据与预期的均匀分布。

• 用户行为分析:分析用户行为数据在不同时间段或不同用户群体中的分布差异。

示例

以下是一个使用 Bucket Count K-S Test 的示例,假设我们有一个索引`correlate_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 },

              { "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 }

            ]

          }

        },

        "ks_test": {

          "bucket_count_ks_test": {

            "buckets_path": "latency_ranges>_count",

            "alternative": ["less", "greater", "two_sided"]

          }

        }

      }

    }

  }

}

```

在这个示例中:

• 使用`terms`聚合按`version`字段分组。

• 使用`range`聚合将`latency`字段划分为多个范围。

• 使用`bucket_count_ks_test`聚合比较每个版本的延迟分布与均匀分布的差异。

输出结果

聚合结果将包含每个版本的延迟分布的 K-S 检验结果,包括`less`、`greater`和`two_sided`的 p 值。这些 p 值可以帮助我们判断延迟分布是否与预期分布显著不同。

通过这种聚合,用户可以快速识别出哪些版本的软件在延迟分布上存在显著差异,从而为进一步的性能分析或问题排查提供依据。


http://www.ppmy.cn/news/1571487.html

相关文章

【DeepSeek】DeepSeek的横向扩展使用② | 制作PPT

本文的主要内容是使用DeepSeek KIMI 制作PPT,效率飞起。 目录 如何使用DeepSeek制作PPT? ①利用 DeepSeek 生成 PPT 内容。 ②使用 Kimi 转换生成 PPT DeepSeek官网:DeepSeek 点击“开始对话”,进入交互页面。 Chat&#x…

c语言样式主题 清爽风格 代码色彩 keil风格 适合单片机开发GD32 STM32等 cursor或者vscode 的settings.json文件

c语言样式主题 清爽风格 代码色彩 keil风格 适合单片机开发GD32 STM32等 cursor或者vscode 的settings.json文件 如上图,是不是和keil mdk很相近。 代码色彩,简单,配合 // 设置工作台主题为 Visual Studio 2017 Light - C 主题使用&#xf…

Cursor 编辑器详细介绍与使用

Cursor 编辑器详细介绍与使用 一、简介 Cursor 是一款 AI 驱动的代码编辑器,集成了先进的大型语言模型(如 GPT-4、Claude 3.5),旨在提升开发者的编程效率和代码质量。它基于 Visual Studio Code (VS Code) 开发,因此继…

Unity使用iTextSharp导出PDF-01准备dll

资料 使用iTextSharp在Asp.Net中操作PDF系列文章 目录 iText 中文教程(含代码).PDF 环境 Unity版本: 2019.4.40f1c1 Scripting Backend:Mono Api Compatibility Level*:.NET 4.x 平台:PC 提取DLL 使用VS2022创建一个控制台应用(.NET Fra…

python基础入门:附录:常用第三方库推荐(NumPy、Django等)

Python常用第三方库全景指南:从基础到前沿工具集 一、数据科学核心套件 数值计算三剑客 # NumPy数组操作示例 import numpy as np arr np.arange(1, 10).reshape(3,3) print(arr arr.T) # 矩阵乘法# Pandas数据分析示例 import pandas as pd df pd.DataFrame…

在微服务中,如何使用feign在各个微服务中进行远程调用

在微服务中&#xff0c;如何使用feign在不同微服务中进行远程调用 在微服务中&#xff0c;如何使用feign在不同微服务中进行远程调用 步骤&#xff1a; 第一步&#xff1a; 引入feign依赖 <dependency><groupId>org.springframework.cloud</groupId><…

GPU、CUDA 和 cuDNN 学习研究【笔记】

分享自己在入门显存优化时看过的一些关于 GPU 和 CUDA 和 cuDNN 的网络资料。 更多内容见&#xff1a; Ubuntu 22.04 LTS 安装 PyTorch CUDA 深度学习环境-CSDN博客CUDA 计算平台 & CUDA 兼容性【笔记】-CSDN博客 文章目录 GPUCUDACUDA Toolkit都包含什么&#xff1f;NVID…

大语言模型RAG,transformer

1、RAG技术流总结 第一张图是比较经典的RAG知识图谱&#xff0c;第二张图是更加详细扎实的介绍图。 1.1 索引 坦白来说这部分的技术并不是大模型领域的&#xff0c;更像是之前技术在大模型领域的应用&#xff1b;早在2019年我就做过faiss部分的尝试&#xff0c;彼时索引技术已…