获取整体桶 API编辑

检索汇总多个异常检测作业的桶结果的整体桶结果。

请求编辑

GET _ml/anomaly_detectors/<job_id>/results/overall_buckets

GET _ml/anomaly_detectors/<job_id>,<job_id>/results/overall_buckets

GET _ml/anomaly_detectors/_all/results/overall_buckets

先决条件编辑

需要 monitor_ml 集群权限。此权限包含在 machine_learning_user 内置角色中。

描述编辑

默认情况下,整体桶的跨度等于指定异常检测作业的最大桶跨度。要覆盖该行为,请使用可选的 bucket_span 参数。要详细了解桶的概念,请参阅

overall_score 通过组合整体桶跨度内所有桶的分数来计算。首先,计算整体桶中每个异常检测作业的最大 anomaly_score。然后对这些分数中的前 top_n 个分数进行平均,得到 overall_score。这意味着您可以微调 overall_score,使其对同时检测到异常的作业数量或多或少敏感。例如,如果将 top_n 设置为 1,则 overall_score 是整体桶中的最大桶分数。或者,如果将 top_n 设置为作业数量,则仅当所有作业都在该整体桶中检测到异常时,overall_score 才高。如果设置了 bucket_span 参数(设置为大于其默认值的值),则 overall_score 是跨度等于作业最大桶跨度的整体桶的最大 overall_score

路径参数编辑

<job_id>

(必填,字符串)异常检测作业的标识符。它可以是作业标识符、组名、以逗号分隔的作业或组列表,或通 wildcard 表达式。

您可以通过使用 _all 或将 * 指定为作业标识符来汇总所有异常检测作业的桶结果。

查询参数编辑

allow_no_match

(可选,布尔值)指定在以下情况下该怎么做

  • 请求
  • 包含通配符表达式,并且没有匹配的作业。
  • 包含 _all 字符串或没有标识符,并且没有匹配项。

包含通配符表达式,并且只有部分匹配。

默认值为 true,它在没有匹配项时返回一个空的 jobs 数组,在有部分匹配项时返回结果的子集。如果此参数为 false,则当没有匹配项或只有部分匹配项时,请求将返回 404 状态代码。
bucket_span
(可选,字符串)整体桶的跨度。必须大于或等于指定异常检测作业的最大桶跨度,这是默认值。
end
(可选,字符串)返回时间戳早于此时间的整体桶。默认为 -1,这意味着它未设置,并且结果不限于特定时间戳。
exclude_interim
(可选,布尔值)如果为 true,则输出将排除临时整体桶。如果整体桶间隔内的任何作业桶是临时的,则整体桶是临时的。默认为 false,这意味着包含临时结果。
overall_score
(可选,双精度)返回整体得分大于或等于此值的整体桶。默认为 0.0
start
(可选,字符串)返回时间戳晚于此时间的整体桶。默认为 -1,这意味着它未设置,并且结果不限于特定时间戳。
top_n

(可选,整数)要在 overall_score 计算中使用的顶级异常检测作业桶分数的数量。默认为 1

请求正文编辑

您还可以在请求正文中指定查询参数(例如 allow_no_matchbucket_span)。

响应正文编辑

默认值为 true,它在没有匹配项时返回一个空的 jobs 数组,在有部分匹配项时返回结果的子集。如果此参数为 false,则当没有匹配项或只有部分匹配项时,请求将返回 404 状态代码。
API 返回一个整体桶对象数组,这些对象具有以下属性
(数字)桶的长度(以秒为单位)。与跨度最长的作业的 bucket_span 匹配。
is_interim
(布尔值)如果为 true,则这是一个临时结果。换句话说,结果是根据部分输入数据计算得出的。
jobs
(可选,布尔值)如果为 true,则输出将排除临时整体桶。如果整体桶间隔内的任何作业桶是临时的,则整体桶是临时的。默认为 false,这意味着包含临时结果。
(数组)包含每个 job_idmax_anomaly_score 的对象数组。
(数字)每个作业的最大桶 anomaly_scoretop_n 平均值。
result_type
(字符串)内部。始终设置为 overall_bucket
timestamp

(日期)为其计算这些结果的桶的开始时间。

response = client.ml.get_overall_buckets(
  job_id: 'job-*',
  body: {
    overall_score: 80,
    start: '1403532000000'
  }
)
puts response
GET _ml/anomaly_detectors/job-*/results/overall_buckets
{
  "overall_score": 80,
  "start": "1403532000000"
}

示例编辑

{
  "count": 1,
  "overall_buckets": [
    {
      "timestamp" : 1403532000000,
      "bucket_span" : 3600,
      "overall_score" : 80.0,
      "jobs" : [
        {
          "job_id" : "job-1",
          "max_anomaly_score" : 30.0
        },
        {
          "job_id" : "job-2",
          "max_anomaly_score" : 10.0
        },
        {
          "job_id" : "job-3",
          "max_anomaly_score" : 80.0
        }
      ],
      "is_interim" : false,
      "result_type" : "overall_bucket"
    }
  ]
}

在此示例中,API 返回与指定的分数和时间限制匹配的单个结果。 overall_score 是最大作业分数,因为未指定时,top_n 默认为 1

response = client.ml.get_overall_buckets(
  job_id: 'job-*',
  body: {
    top_n: 2,
    overall_score: 50,
    start: '1403532000000'
  }
)
puts response
GET _ml/anomaly_detectors/job-*/results/overall_buckets
{
  "top_n": 2,
  "overall_score": 50.0,
  "start": "1403532000000"
}

下一个示例类似,但这次 top_n 设置为 2

{
  "count": 1,
  "overall_buckets": [
    {
      "timestamp" : 1403532000000,
      "bucket_span" : 3600,
      "overall_score" : 55.0,
      "jobs" : [
        {
          "job_id" : "job-1",
          "max_anomaly_score" : 30.0
        },
        {
          "job_id" : "job-2",
          "max_anomaly_score" : 10.0
        },
        {
          "job_id" : "job-3",
          "max_anomaly_score" : 80.0
        }
      ],
      "is_interim" : false,
      "result_type" : "overall_bucket"
    }
  ]
}