获取整体桶 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>
-
(必需,字符串) 异常检测作业的标识符。它可以是作业标识符、组名称、逗号分隔的作业或组列表,或者通配符表达式。
您可以通过使用
_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
)。
响应主体
编辑API 返回整体桶对象数组,这些对象具有以下属性
-
bucket_span
- (数字) 桶的长度,以秒为单位。与最长作业的
bucket_span
匹配。 -
is_interim
- (布尔值) 如果为
true
,则这是一个临时结果。换句话说,结果是根据部分输入数据计算的。 -
jobs
- (数组) 包含每个
job_id
的max_anomaly_score
的对象数组。 -
overall_score
- (数字) 每个作业的最大桶
anomaly_score
的top_n
平均值。 -
result_type
- (字符串) 内部。这始终设置为
overall_bucket
。 -
timestamp
- (日期) 计算这些结果的桶的开始时间。
示例
编辑resp = client.ml.get_overall_buckets( job_id="job-*", overall_score=80, start="1403532000000", ) print(resp)
response = client.ml.get_overall_buckets( job_id: 'job-*', body: { overall_score: 80, start: '1403532000000' } ) puts response
const response = await client.ml.getOverallBuckets({ job_id: "job-*", overall_score: 80, start: 1403532000000, }); console.log(response);
GET _ml/anomaly_detectors/job-*/results/overall_buckets { "overall_score": 80, "start": "1403532000000" }
在此示例中,API 返回与指定分数和时间约束匹配的单个结果。overall_score
是最大作业分数,因为未指定时 top_n
默认为 1
{ "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" } ] }
下一个示例类似,但这次 top_n
设置为 2
resp = client.ml.get_overall_buckets( job_id="job-*", top_n=2, overall_score=50, start="1403532000000", ) print(resp)
response = client.ml.get_overall_buckets( job_id: 'job-*', body: { top_n: 2, overall_score: 50, start: '1403532000000' } ) puts response
const response = await client.ml.getOverallBuckets({ job_id: "job-*", top_n: 2, overall_score: 50, start: 1403532000000, }); console.log(response);
GET _ml/anomaly_detectors/job-*/results/overall_buckets { "top_n": 2, "overall_score": 50.0, "start": "1403532000000" }
请注意 overall_score
现在是如何计算前 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" } ] }