获取分类 API

编辑

检索一个或多个类别的异常检测作业结果。

请求

编辑

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

GET _ml/anomaly_detectors/<job_id>/results/categories/<category_id>

先决条件

编辑

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

描述

编辑

当作业配置中指定了 categorization_field_name 时,可以查看生成的类别的定义。类别定义描述了匹配的常用术语,并包含匹配值的示例。

分类分析的异常结果可以作为 bucket、影响因子和记录结果使用。例如,结果可能表明在 16:45 有一个不寻常的日志消息类别 11 的计数。然后,您可以检查该类别的描述和示例。有关详细信息,请参阅分类日志消息

路径参数

编辑
<job_id>
(必需,字符串)异常检测作业的标识符。
<category_id>
(可选,长整型)类别的标识符,在作业中是唯一的。如果您既不指定类别 ID 也不指定 partition_field_value,则 API 返回有关所有类别的信息。如果您仅指定 partition_field_value,它将返回有关指定分区的所有类别的信息。

查询参数

编辑
from
(可选,整数)跳过指定数量的类别。默认为 0
partition_field_value
(可选,字符串)仅返回指定分区的类别。
size
(可选,整数)指定要获取的最大类别数。默认为 100

请求体

编辑

您还可以在请求体中指定 partition_field_value 查询参数。

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

响应体

编辑

API 返回类别对象数组,这些对象具有以下属性

category_id
(无符号整数)类别的唯一标识符。即使启用了按分区分类,category_id 在作业级别也是唯一的。
examples
(数组)与类别匹配的实际值的示例列表。
grok_pattern
[预览] 此功能为技术预览版,可能会在未来版本中更改或删除。Elastic 将努力解决任何问题,但技术预览版中的功能不受官方 GA 功能的支持 SLA 约束。 (字符串)可在 Logstash 或摄取管道中使用的 Grok 模式,用于从匹配类别的消息中提取字段。此字段是实验性的,可能会在未来版本中更改或删除。找到的 Grok 模式不是最佳的,但通常是手动调整的一个良好起点。
job_id
(字符串)异常检测作业的标识符。
max_matching_length
(无符号整数)与类别匹配的字段的最大长度。该值会增加 10%,以便匹配未分析的类似字段。
partition_field_name
(字符串)如果启用了按分区分类,则此属性标识用于分割分类的字段。禁用按分区分类时,它不存在。
partition_field_value
(字符串)如果启用了按分区分类,则此属性标识类别的 partition_field_name 的值。禁用按分区分类时,它不存在。
regex
(字符串)用于搜索与类别匹配的值的正则表达式。
terms
(字符串)类别值中匹配的常见标记的空格分隔列表。
num_matches
(长整型)此类别匹配的消息数。仅在作业 _flush_close 之后才能保证拥有最新的准确计数
preferred_to_categories
(列表)此当前类别包含的 category_id 条目列表。分类器处理的任何新消息都将与此类别匹配,而不是此列表中的任何类别。仅在作业 _flush_close 之后才能保证拥有最新的准确类别列表

示例

编辑
resp = client.ml.get_categories(
    job_id="esxi_log",
    page={
        "size": 1
    },
)
print(resp)
response = client.ml.get_categories(
  job_id: 'esxi_log',
  body: {
    page: {
      size: 1
    }
  }
)
puts response
const response = await client.ml.getCategories({
  job_id: "esxi_log",
  page: {
    size: 1,
  },
});
console.log(response);
GET _ml/anomaly_detectors/esxi_log/results/categories
{
  "page":{
    "size": 1
  }
}
{
  "count": 11,
  "categories": [
    {
      "job_id" : "esxi_log",
      "category_id" : 1,
      "terms" : "Vpxa verbose vpxavpxaInvtVm opID VpxaInvtVmChangeListener Guest DiskInfo Changed",
      "regex" : ".*?Vpxa.+?verbose.+?vpxavpxaInvtVm.+?opID.+?VpxaInvtVmChangeListener.+?Guest.+?DiskInfo.+?Changed.*",
      "max_matching_length": 154,
      "examples" : [
        "Oct 19 17:04:44 esxi1.acme.com Vpxa: [3CB3FB90 verbose 'vpxavpxaInvtVm' opID=WFU-33d82c31] [VpxaInvtVmChangeListener] Guest DiskInfo Changed",
        "Oct 19 17:04:45 esxi2.acme.com Vpxa: [3CA66B90 verbose 'vpxavpxaInvtVm' opID=WFU-33927856] [VpxaInvtVmChangeListener] Guest DiskInfo Changed",
        "Oct 19 17:04:51 esxi1.acme.com Vpxa: [FFDBAB90 verbose 'vpxavpxaInvtVm' opID=WFU-25e0d447] [VpxaInvtVmChangeListener] Guest DiskInfo Changed",
        "Oct 19 17:04:58 esxi2.acme.com Vpxa: [FFDDBB90 verbose 'vpxavpxaInvtVm' opID=WFU-bbff0134] [VpxaInvtVmChangeListener] Guest DiskInfo Changed"
      ],
      "grok_pattern" : ".*?%{SYSLOGTIMESTAMP:timestamp}.+?Vpxa.+?%{BASE16NUM:field}.+?verbose.+?vpxavpxaInvtVm.+?opID.+?VpxaInvtVmChangeListener.+?Guest.+?DiskInfo.+?Changed.*"
    }
  ]
}