变化点聚合

编辑

此功能处于技术预览状态,可能会在未来的版本中更改或删除。Elastic 会尽力修复任何问题,但技术预览版中的功能不受官方 GA 功能的支持 SLA 约束。

一种兄弟管道聚合,用于检测指标中的峰值、下降和变化点。给定兄弟多桶聚合提供的数值分布,此聚合会指示任何峰值或下降的桶,和/或数值分布中发生最大变化的桶(如果它们在统计上显著)。

建议使用变化点聚合来检测基于时间的数据中的变化,但是,您可以使用任何指标来创建桶。

参数

编辑
buckets_path
(必需,字符串)包含一组值的桶的路径,用于检测变化点。必须至少有 22 个桶值。最好少于 1,000 个。有关语法,请参阅 buckets_path 语法

语法

编辑

一个 change_point 聚合单独使用时如下所示

{
  "change_point": {
    "buckets_path": "date_histogram>_count" 
  }
}

包含要测试的值的桶。

响应主体

编辑
bucket

(可选,对象)指示发现的变化点的桶的值。如果未找到变化点,则不返回。桶中的所有聚合也会返回。

bucket 的属性
key
(值)匹配的桶的键。可以是字符串或数字。
doc_count
(数字)桶的文档计数。
type

(对象)找到的变化点类型及其相关值。可能类型

  • dip:在此变化点处发生显著的下降
  • distribution_change:值的整体分布已发生显著变化
  • non_stationary:没有变化点,但这些值并非来自平稳分布
  • spike:在此点发生显著的峰值
  • stationary:未找到变化点
  • step_change:变化表明值分布在统计上显著的上升或下降
  • trend_change:在此点发生了整体趋势变化

示例

编辑

以下示例使用 Kibana 示例数据日志数据集。

GET kibana_sample_data_logs/_search
{
  "aggs": {
    "date":{ 
      "date_histogram": {
        "field": "@timestamp",
        "fixed_interval": "1d"
      },
      "aggs": {
        "avg": { 
          "avg": {
            "field": "bytes"
          }
        }
      }
    },
    "change_points_avg": { 
      "change_point": {
        "buckets_path": "date>avg" 
      }
    }
  }
}

一个日期直方图聚合,它创建具有一天间隔的桶。

一个 date 聚合的兄弟聚合,它计算每个桶中 bytes 字段的平均值。

变化点检测聚合配置对象。

用于检测变化点的聚合值的路径。在本例中,变化点聚合的输入是 avg 的值,它是 date 的兄弟聚合。

请求返回类似于以下的响应

    "change_points_avg" : {
      "bucket" : {
        "key" : "2023-04-29T00:00:00.000Z", 
        "doc_count" : 329, 
        "avg" : { 
          "value" : 4737.209726443769
        }
      },
      "type" : { 
        "dip" : {
          "p_value" : 3.8999455212466465e-10, 
          "change_point" : 41 
        }
      }
    }

作为变化点的桶键。

该桶中的文档数量。

桶中的聚合值。

找到的变化类型。

p_value 指示变化的极端程度;较低的值表示更大的变化。

发生变化的特定桶(索引从 0 开始)。