获取记录 API

编辑

检索异常检测作业的异常记录。

请求

编辑

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

先决条件

编辑

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

描述

编辑

记录包含详细的分析结果。它们根据检测器配置描述在输入数据中识别出的异常活动。

根据输入数据的特征和大小,可能存在许多异常记录。实际上,通常有太多记录无法手动处理。因此,机器学习功能会将异常记录进行复杂的聚合到存储桶中。

记录结果的数量取决于每个存储桶中发现的异常数量,这与建模的时间序列的数量和检测器的数量有关。

路径参数

编辑
<job_id>
(必需,字符串)异常检测作业的标识符。

查询参数

编辑
desc
(可选,布尔值)如果为 true,则结果按降序排序。
end
(可选,字符串)返回时间戳早于此时间的记录。默认为 -1,表示未设置,结果不限于特定的时间戳。
exclude_interim
(可选,布尔值)如果为 true,则输出将排除临时结果。默认为 false,表示包含临时结果。
from
(可选,整数)跳过指定数量的记录。默认为 0
record_score
(可选,双精度浮点数)返回异常分数大于或等于此值的记录。默认为 0.0
size
(可选,整数)指定要获取的最大记录数。默认为 100
sort
(可选,字符串)指定请求记录的排序字段。默认情况下,记录按 record_score 值排序。
start
(可选,字符串)返回时间戳在此时间之后的记录。默认为 -1,表示未设置,结果不限于特定的时间戳。

请求正文

编辑

您也可以在请求正文中指定查询参数;例外的是 fromsize,请改用 page

page
page 的属性
from
(可选,整数)跳过指定数量的记录。默认为 0
size
(可选,整数)指定要获取的最大记录数。默认为 100

响应正文

编辑

API 返回一个记录对象数组,其中包含以下属性

actual
(数组)存储桶的实际值。
anomaly_score_explanation

(对象)如果存在,它会提供有关影响初始异常得分的因素的信息。

anomaly_score_explanation 的属性
anomaly_characteristics_impact
(可选,整数)来自检测到的异常的持续时间和幅度相对于历史平均值的影响。
anomaly_length
(可选,整数)检测到的异常的长度(以存储桶数为单位)。
anomaly_type
(可选,字符串)检测到的异常的类型:峰值或下降。
high_variance_penalty
(可选,布尔值)表示具有较大置信区间的存储桶的异常分数降低。如果存储桶具有较大的置信区间,则会降低分数。
incomplete_bucket_penalty
(可选,布尔值)如果存储桶包含的样本数少于预期,则会降低分数。如果存储桶包含的样本数少于预期,则会降低分数。
lower_confidence_bound
(可选,双精度浮点数)95% 置信区间的下限。
multimodal_distribution
(可选,布尔值)指示存储桶值的概率分布是否具有多个模式。当存在多个模式时,典型值可能不是最可能的。
multi_bucket_impact
(可选,整数)过去 12 个存储桶中实际值和典型值之间偏差的影响。
single_bucket_impact
(可选,整数)当前存储桶中实际值和典型值之间偏差的影响。
typical_value
(可选,双精度浮点数)此存储桶的典型(预期)值。
upper_confidence_bound
(可选,双精度浮点数)95% 置信区间的上限。
bucket_span
(数字)存储桶的长度(以秒为单位)。此值与作业中指定的 bucket_span 相匹配。
by_field_name
(字符串)用于拆分数据的字段。特别是,此属性用于分析分割相对于其自身历史记录的情况。它用于查找分割上下文中不寻常的值。
by_field_value
(字符串)by_field_name 的值。
causes
(数组)对于总体分析,必须在检测器中指定 over 字段。此属性包含一个异常记录数组,这些记录是为 over 字段标识的异常的原因。如果不存在 over 字段,则此字段不存在。此子资源包含 over_field_name 的最异常的记录。出于可扩展性原因,最多返回 10 个最显著的异常原因。作为核心分析建模的一部分,这些低级异常记录会为其父 over 字段记录聚合。causes 资源包含与记录资源类似的元素,即 actualtypicalgeo_results.actual_pointgeo_results.typical_point*_field_name*_field_value。概率和分数不适用于原因。
detector_index
(数字)检测器的唯一标识符。
field_name
(字符串)某些函数需要一个字段才能操作,例如,sum()。对于这些函数,此值是要分析的字段的名称。
function
(字符串)异常发生的函数,如检测器配置中所指定。例如,max
function_description
(字符串)异常发生的函数的描述,如检测器配置中所指定。
geo_results

(可选,对象)如果检测器函数为 lat_long,则此对象包含实际值和典型值的纬度和经度的逗号分隔字符串。

geo_results 的属性
actual_point
(字符串)格式化为 geo_point 的存储桶的实际值。
typical_point
(字符串)格式化为 geo_point 的存储桶的典型值。
influencers
(数组)如果在检测器配置中指定了 influencers,则此数组包含导致或应为异常负责的影响因素。
initial_record_score
(数字)一个介于 0 到 100 之间的标准化分数,该分数基于此记录的异常概率。这是处理存储桶时计算的初始值。
is_interim
(布尔值)如果为 true,则表示这是一个临时结果。换句话说,结果是基于部分输入数据计算的。
job_id
(字符串)异常检测作业的标识符。
multi_bucket_impact
(数字)指示异常是多存储桶还是单存储桶的强度。该值介于 -5.0+5.0 之间,其中 -5.0 表示异常纯粹是单存储桶,+5.0 表示异常纯粹是多存储桶。
over_field_name
(字符串)用于拆分数据的字段。特别是,此属性用于分析分割相对于所有分割历史记录的情况。它用于查找所有分割群体中不寻常的值。有关更多信息,请参阅执行总体分析
over_field_value
(字符串)over_field_name 的值。
partition_field_name
(字符串)用于细分分析的字段。当您使用此属性时,此字段的每个值都有完全独立的基线。
partition_field_value
(字符串)partition_field_name 的值。
probability
(数字)单个异常发生的概率,范围为 0 到 1。例如,0.0000772031。此值可以保持超过 300 位小数的高精度,因此提供 record_score 作为对此值的可读且友好的解释。
record_score
(数字)一个介于 0 到 100 之间的标准化分数,该分数基于此记录的异常概率。与 initial_record_score 不同,此值将在分析新数据时通过重新标准化过程进行更新。
result_type
(字符串)内部。此值始终设置为 record
timestamp
(日期)计算这些结果的存储桶的开始时间。
typical
(数组)根据分析建模,存储桶的典型值。

根据分析的字段,会添加额外的记录属性。例如,如果以 hostname 作为分组字段进行分析,则会在结果文档中添加一个 hostname 字段。此信息使您能够更轻松地过滤异常结果。

示例

编辑
resp = client.ml.get_records(
    job_id="low_request_rate",
    sort="record_score",
    desc=True,
    start="1454944100000",
)
print(resp)
response = client.ml.get_records(
  job_id: 'low_request_rate',
  body: {
    sort: 'record_score',
    desc: true,
    start: '1454944100000'
  }
)
puts response
const response = await client.ml.getRecords({
  job_id: "low_request_rate",
  sort: "record_score",
  desc: true,
  start: 1454944100000,
});
console.log(response);
GET _ml/anomaly_detectors/low_request_rate/results/records
{
  "sort": "record_score",
  "desc": true,
  "start": "1454944100000"
}
{
  "count" : 4,
  "records" : [
    {
      "job_id" : "low_request_rate",
      "result_type" : "record",
      "probability" : 1.3882308899968812E-4,
      "multi_bucket_impact" : -5.0,
      "record_score" : 94.98554565630553,
      "initial_record_score" : 94.98554565630553,
      "bucket_span" : 3600,
      "detector_index" : 0,
      "is_interim" : false,
      "timestamp" : 1577793600000,
      "function" : "low_count",
      "function_description" : "count",
      "typical" : [
        28.254208230188834
      ],
      "actual" : [
        0.0
      ]
    },
  ...
  ]
}