变更点聚合编辑

此功能处于技术预览阶段,可能在将来的版本中发生更改或删除。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" 
      }
    }
  }
}

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

一个 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 开始)。