获取整体桶 API
编辑获取整体桶 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_match
和 bucket_span
)。
响应正文编辑
-
默认值为
true
,它在没有匹配项时返回一个空的jobs
数组,在有部分匹配项时返回结果的子集。如果此参数为false
,则当没有匹配项或只有部分匹配项时,请求将返回404
状态代码。 - API 返回一个整体桶对象数组,这些对象具有以下属性
-
(数字)桶的长度(以秒为单位)。与跨度最长的作业的
bucket_span
匹配。 - is_interim
-
(布尔值)如果为
true
,则这是一个临时结果。换句话说,结果是根据部分输入数据计算得出的。 - jobs
-
(可选,布尔值)如果为
true
,则输出将排除临时整体桶。如果整体桶间隔内的任何作业桶是临时的,则整体桶是临时的。默认为false
,这意味着包含临时结果。 - (数组)包含每个
job_id
的max_anomaly_score
的对象数组。 -
(数字)每个作业的最大桶
anomaly_score
的top_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" } ] }