机器学习异常检测API
edit机器学习异常检测API
edit您可以使用以下API来执行机器学习异常检测活动。
参见 机器学习API, 机器学习数据框分析API, 机器学习训练模型API.
异常检测作业
edit- 创建 或 删除异常检测作业
- 添加 或 从日历中删除异常检测作业
- 打开 或 关闭异常检测作业
- 获取异常检测作业信息 或 统计信息
- 刷新异常检测作业
- 向异常检测作业发布数据
- 更新异常检测作业
- 创建 或 删除预测
- 重置异常检测作业
日历
edit过滤器
edit数据馈送
edit模型快照
edit结果
edit删除过期数据
edit添加事件到日历 API
edit在日历中安排预定的事件。
请求
editPOST _ml/calendars/
前提条件
edit需要 manage_ml 集群权限。此权限包含在 machine_learning_admin 内置角色中。
路径参数
edit-
<calendar_id> - (必需, 字符串) 一个唯一标识日历的字符串。
请求体
edit-
events -
(必需,数组) 一个或多个预定事件的列表。事件的开始和结束时间可以指定为自纪元以来的整数毫秒数,或以ISO 8601格式表示的字符串。
事件的属性
-
description - (可选,字符串) 预定事件的描述。
-
end_time - (必需,日期) 预定事件结束的时间戳,以自纪元以来的毫秒数或ISO 8601格式表示。
-
start_time - (必需,日期) 预定事件开始的时间戳,以自纪元以来的毫秒数或ISO 8601格式表示。
-
skip_results -
(可选,布尔值) 如果为
true,则在预定事件期间不会创建结果。默认值为true。 -
skip_model_update -
(可选,布尔值) 如果为
true,则在预定事件期间不会更新模型。默认值为true。 -
force_time_shift -
(可选,整数) 允许你在异常检测器中按指定方向和秒数移动时间。这对于快速调整已知的夏令时(DST)事件非常有用。例如,为了在秋季DST事件期间考虑一小时的时间回退,请使用值
-3600。该参数默认不设置。时间在预定事件开始时移动一次。移动量以秒为单位。
-
示例
editPOST _ml/calendars/planned-outages/events
{
"events" : [
{"description": "event 1", "start_time": 1513641600000, "end_time": 1513728000000},
{"description": "event 2", "start_time": 1513814400000, "end_time": 1513900800000},
{"description": "event 3", "start_time": 1514160000000, "end_time": 1514246400000}
]
}
API返回以下结果:
{
"events": [
{
"description": "event 1",
"start_time": 1513641600000,
"end_time": 1513728000000,
"skip_result": true,
"skip_model_update": true,
"calendar_id": "planned-outages"
},
{
"description": "event 2",
"start_time": 1513814400000,
"end_time": 1513900800000,
"skip_result": true,
"skip_model_update": true,
"calendar_id": "planned-outages"
},
{
"description": "event 3",
"start_time": 1514160000000,
"end_time": 1514246400000,
"skip_result": true,
"skip_model_update": true,
"calendar_id": "planned-outages"
}
]
}
POST _ml/calendars/dst-germany/events
{
"events" : [
{"description": "Fall 2024", "start_time": 1729994400000, "end_time": 1730167200000, "skip_result": false, "skip_model_update": false, "force_time_shift": -3600},
{"description": "Spring 2025", "start_time": 1743296400000, "end_time": 1743469200000, "skip_result": false, "skip_model_update": false, "force_time_shift": 3600}
]
}
API返回以下结果:
{
"events": [
{
"description": "Fall 2024",
"start_time": 1729994400000,
"end_time": 1730167200000,
"skip_result": false,
"skip_model_update": false,
"force_time_shift": -3600,
"calendar_id": "dst-germany"
},
{
"description": "Spring 2025",
"start_time": 1743296400000,
"end_time": 1743469200000,
"skip_result": false,
"skip_model_update": false,
"force_time_shift": 3600,
"calendar_id": "dst-germany"
}
]
}
将异常检测作业添加到日历 API
edit将异常检测作业添加到日历中。
请求
editPUT _ml/calendars/
先决条件
edit需要 manage_ml 集群权限。此权限包含在 machine_learning_admin 内置角色中。
路径参数
edit-
<calendar_id> - (必需, 字符串) 一个唯一标识日历的字符串。
-
<job_id> - (必需,字符串) 异常检测作业的标识符。它可以是作业标识符、组名或逗号分隔的作业或组列表。
示例
editPUT _ml/calendars/planned-outages/jobs/total-requests
API返回以下结果:
{
"calendar_id": "planned-outages",
"job_ids": [
"total-requests"
]
}
关闭异常检测作业 API
edit关闭一个或多个异常检测作业。
请求
editPOST _ml/anomaly_detectors/
POST _ml/anomaly_detectors/
POST _ml/anomaly_detectors/_all/_close
先决条件
edit-
需要
manage_ml集群权限。此权限包含在machine_learning_admin内置角色中。
描述
edit一个职位在其生命周期中可以被打开和关闭多次。
已关闭的工作无法接收数据或执行分析操作,但您仍然可以浏览和导航结果。
如果您关闭一个正在运行的数据馈送的异常检测作业,请求首先尝试停止数据馈送。此行为等同于使用与关闭作业请求相同的timeout和force参数调用停止数据馈送。
当你关闭一个作业时,它会运行一些维护任务,例如修剪模型历史记录、刷新缓冲区、计算最终结果并持久化模型快照。根据作业的大小,关闭和重新打开可能需要几分钟的时间。
关闭后,作业在集群上的开销最小,除了维护其元数据。因此,关闭不再需要处理数据的作业是一个最佳实践。
当一个指定了结束日期的数据馈送停止时,它会自动关闭其关联的作业。
如果您使用force查询参数,请求将在不执行相关操作(如刷新缓冲区和持久化模型快照)的情况下返回。因此,如果您希望在关闭作业API返回后作业处于一致状态,请不要使用此参数。force查询参数仅应在作业已经失败或您对作业最近可能产生或未来可能产生的结果不感兴趣的情况下使用。
路径参数
edit-
<job_id> -
(必需,字符串) 异常检测作业的标识符。它可以是作业标识符、组名或通配符表达式。
您可以通过使用
_all或通过指定*作为作业标识符来关闭所有作业。
查询参数
edit-
allow_no_match -
(可选, 布尔值) 指定在请求时执行的操作:
- 包含通配符表达式且没有匹配的作业。
-
包含
_all字符串或没有标识符且没有匹配项。 - 包含通配符表达式且只有部分匹配。
默认值为
true,在没有匹配项时返回一个空的jobs数组,在有部分匹配项时返回部分结果。如果此参数为false,在没有匹配项或只有部分匹配项时,请求将返回404状态码。 -
force - (可选, 布尔值) 用于关闭失败的作业,或强制关闭未响应初始关闭请求的作业。
-
timeout - (可选,时间单位) 控制等待作业关闭的时间。默认值为30分钟。
请求体
edit您还可以在请求体中指定查询参数(例如 allow_no_match 和 force)。
响应代码
edit-
404(Missing resources) -
如果
allow_no_match是false,此代码表示没有与请求匹配的资源,或者只有部分匹配的请求。
创建异常检测作业 API
edit实例化一个异常检测作业。
请求
editPUT _ml/anomaly_detectors/
先决条件
edit需要 manage_ml 集群权限。此权限包含在 machine_learning_admin 内置角色中。
如果你包含一个datafeed_config,你还必须拥有源索引上的read索引权限。
描述
edit-
您必须使用 Kibana 或此 API 来创建异常检测作业。不要直接使用 Elasticsearch 索引 API 将作业放入
.ml-config索引中。如果启用了 Elasticsearch 安全功能,请不要为用户提供.ml-config索引的write权限。 -
如果您包含一个
datafeed_config并且启用了 Elasticsearch 安全功能,您的数据馈送会记住创建它的用户在创建时拥有的角色,并使用这些相同的角色运行查询。如果您提供了 二次授权头,则将使用这些凭据。
路径参数
edit-
<job_id> - (必需,字符串) 异常检测作业的标识符。此标识符可以包含小写字母数字字符(a-z 和 0-9)、连字符和下划线。它必须以字母数字字符开头和结尾。
请求体
edit-
allow_lazy_open -
(可选, 布尔值)
高级配置选项。指定当没有足够的机器学习节点容量立即将其分配到节点时,此作业是否可以打开。默认值为
false;如果找不到具有运行作业容量的机器学习节点,打开异常检测作业 API 将返回错误。但是,这也受集群范围的xpack.ml.max_lazy_ml_nodes设置的限制;请参阅 高级机器学习设置。如果此选项设置为true,打开异常检测作业 API 不会返回错误,并且作业将保持在opening状态,直到有足够的机器学习节点容量可用。
-
analysis_config -
(必需的, 对象) 分析配置, 指定如何分析数据。创建作业后, 您不能更改分析配置; 所有属性都是信息性的。
Properties of
analysis_config-
bucket_span -
(时间单位)
分析被聚合到的间隔的大小, 通常在
5m和1h之间。此值应为整数天数或等于一天中整数个桶的数量; [8.1] 在 8.1 中已弃用。不符合这些建议的值已被弃用, 并在未来版本中将不允许使用 . 如果异常检测作业使用带有 聚合的数据馈送, 此值还必须可被日期直方图聚合的间隔整除。默认值 是5m。有关更多信息, 请参阅 桶跨度。 -
categorization_analyzer -
(对象或字符串) 如果指定了
categorization_field_name, 您还可以定义用于解释分类字段的分析器。此属性不能与categorization_filters同时使用。分类分析器指定了categorization_field在分类过程中如何被解释。语法与定义analyzer的语法非常相似, 用于Analyze endpoint。有关更多信息, 请参阅分类日志消息。categorization_analyzer字段可以指定为字符串或对象。如果它是字符串, 则必须引用 内置分析器 或由其他插件添加的分析器。如果它是对象, 则具有以下属性:Properties of
categorization_analyzer-
char_filter -
(字符串或对象数组)
一个或多个 字符过滤器。除了
内置字符过滤器, 其他插件可以提供更多字符过滤器。
此属性是可选的。如果未指定, 则在分类之前不应用字符过滤器。如果您自定义分析器的其他方面, 并且需要实现与
categorization_filters等效的功能(当自定义分析器的其他方面时, 不允许使用categorization_filters), 请在此处添加它们作为 模式替换字符过滤器。 -
tokenizer -
(字符串或对象)
在应用字符过滤器后使用的 分词器 的名称或定义。如果
categorization_analyzer指定为对象, 则此属性是必需的。机器学习提供了一个名为ml_standard的分词器, 该分词器以一种已被确定为在各种日志文件格式上产生良好分类结果的方式进行分词, 适用于英语日志。如果您想使用该分词器但更改字符或分词过滤器, 请在您的categorization_analyzer中指定"tokenizer": "ml_standard"。此外,ml_classic分词器也可用, 它以与产品旧版本(6.2 之前)中的非自定义分词器相同的方式进行分词。ml_classic是 6.2 到 7.13 版本中的默认分类分词器, 因此如果您需要与在这些版本中创建的作业的默认分类相同, 请在您的categorization_analyzer中指定"tokenizer": "ml_classic"。
从 Elasticsearch 8.10.0 开始, 使用了一个新的版本号来跟踪机器学习插件中的配置和状态变化。这个新的版本号与产品版本解耦, 并将独立递增。
-
filter - (字符串或对象数组) 一个或多个 分词过滤器。除了内置 分词过滤器, 其他插件可以提供更多分词过滤器。此属性是 可选的。如果未指定, 则在分类之前不应用分词过滤器。
-
-
categorization_field_name -
(字符串)
如果指定了此属性, 则指定字段的值将被分类。生成的类别必须在检测器中通过设置
by_field_name,over_field_name, 或partition_field_name为关键字mlcategory来使用。有关更多信息, 请参阅 分类日志消息。 -
categorization_filters -
(字符串数组)
如果指定了
categorization_field_name, 您还可以定义可选 过滤器。此属性期望一个正则表达式数组。这些表达式 用于从分类字段值中过滤掉匹配的序列。 您可以使用此功能通过排除在定义类别时考虑的序列来微调分类。例如, 您可以 排除日志文件中出现的 SQL 语句。有关更多信息, 请参阅 分类日志消息。此 属性不能与categorization_analyzer同时使用。如果您 只想定义在分词之前应用的简单正则表达式过滤器, 设置此属性是最简单的方法。如果您还想 自定义分词器或分词后过滤, 请使用categorization_analyzer属性, 并将过滤器包含为pattern_replace字符过滤器。效果完全相同。
-
detectors -
(数组) 一个检测器配置对象的数组。检测器配置对象指定作业分析哪些数据字段。它们还指定使用哪些分析函数。您可以为一个作业指定多个检测器。
如果
detectors数组中不包含至少一个检测器, 则无法进行分析, 并会返回一个错误。Properties of
detectors-
by_field_name - (字符串) 用于分割数据的字段。特别是, 此属性用于 分析分割数据相对于其自身历史的情况。它用于在分割的上下文中查找异常值。
-
custom_rules -
(数组) 一个自定义规则对象的数组, 使您能够自定义检测器的工作方式。例如, 规则可以指示检测器在何种条件下应跳过结果。Kibana将自定义规则称为作业规则。更多示例, 请参见 使用自定义规则自定义检测器。
Properties of
custom_rules-
actions -
(数组) 当规则适用时要触发的操作集合。如果指定了多个操作, 所有操作的效果将合并。可用的操作包括:
-
skip_result: 结果将不会被创建。这是默认值。 除非您也指定skip_model_update, 否则模型将照常更新 相应的系列值。 -
skip_model_update: 该系列的值将不会用于更新 模型。除非您也指定skip_result, 否则结果将照常创建。此操作适用于某些值预期会 持续异常且它们以某种方式影响模型, 从而对 其余结果产生负面影响的情况。 -
force_time_shift: 此操作将按指定 量在异常检测器内移动时间。这很有用, 例如, 可以快速适应已知的 夏令时事件。此操作需要params对象中的force_time_shift参数。
-
-
params -
(对象) 一组参数对象, 用于自定义在自定义规则中定义的操作 actions 数组。可用的参数(取决于指定的操作)包括:
force_time_shift。Properties of
params-
force_time_shift -
(对象)
将
time_shift_amount设置为要移动时间的秒数的带符号数字。
-
-
conditions -
(数组) 一个可选的数值条件数组, 当规则适用时。规则必须 要么有一个非空的范围, 要么至少有一个条件。多个条件 通过逻辑
AND组合在一起。一个条件具有以下 属性:Properties of
conditions-
applies_to -
(字符串)
指定条件适用的结果属性。可用的
选项是
actual,typical,diff_from_typical,time。如果您的检测器 使用lat_long,metric,rare, 或freq_rare函数, 您只能 指定适用于time的条件。 -
operator -
(字符串)
指定条件运算符。可用的选项是
gt(大于),gte(大于或等于),lt(小于) 和lte(小于或 等于)。 -
value -
(双精度)
使用
operator与applies_to字段进行比较的值。
-
-
scope -
(对象) 规则适用的可选系列范围。规则必须具有非空范围或至少一个条件。默认情况下, 范围包括所有系列。范围允许用于在
by_field_name、over_field_name</code
-
-
-
-
analysis_limits -
(可选, 对象) 可以为在内存中保存数学模型所需的资源应用限制。这些限制是近似的,可以按作业设置。它们不控制其他进程使用的内存,例如 Elasticsearch Java 进程。
Properties of
analysis_limits-
categorization_examples_limit -
(长整型) 每个类别在内存和结果数据存储中存储的最大示例数量。默认值是4。如果增加这个值,会有更多的示例可用,但这需要你有更多的存储空间。如果将这个值设置为
0,则不会存储任何示例。分类示例限制(
categorization_examples_limit)仅适用于使用分类的分析。更多信息,请参阅分类日志消息。 -
model_memory_limit -
(长整型或字符串) 分析处理所需的大致最大内存资源。一旦接近此限制,数据修剪将变得更加激进。超过此限制后,不再对新实体进行建模。在6.1及更高版本中创建的作业的默认值为
1024mb。然而,如果xpack.ml.max_model_memory_limit设置的值大于0且小于1024mb,则使用该值。如果未设置xpack.ml.max_model_memory_limit,但设置了xpack.ml.use_auto_machine_memory_percent,则默认的model_memory_limit将设置为集群中可能分配的最大大小,上限为1024mb。默认值相对较小,以确保高资源使用是经过深思熟虑的决定。如果您有预期会分析高基数字段的作业,您可能需要使用更高的值。从 Elasticsearch 8.10.0 开始,使用了一个新的版本号来跟踪机器学习插件中的配置和状态变化。这个新的版本号与产品版本解耦,并将独立递增。
如果你指定一个数字而不是字符串,单位将被假定为MiB。为了清晰起见,建议指定一个字符串。如果你指定一个字节大小单位为
b或kb,并且该数字不等于一个离散的兆字节数,它将被向下舍入到最接近的MiB。最小有效值是1 MiB。如果你指定一个小于1 MiB的值,将会发生错误。有关支持的字节大小单位的更多信息,请参阅字节大小单位。如果您为
xpack.ml.max_model_memory_limit设置指定了一个值,当您尝试创建model_memory_limit值大于该设置值的作业时,将会发生错误。更多信息,请参阅 Elasticsearch 中的机器学习设置。
-
-
background_persist_interval -
(可选, 时间单位) 高级配置选项。每次周期性持久化模型之间的时间间隔。默认值是3到4小时之间的随机值,以避免所有作业在完全相同的时间持久化。允许的最小值是1小时。
对于非常大的模型(几个GB),持久化可能需要10-20分钟, 因此不要将
background_persist_interval值设置得太低。 -
custom_settings - (可选, 对象) 高级配置选项。包含关于作业的自定义元数据。例如,它可以包含自定义URL信息,如在 向机器学习结果添加自定义URL中所示。
-
daily_model_snapshot_retention_after_days -
(可选,长整型) 高级配置选项,影响此作业的旧模型快照的自动删除。它指定了一个时间段(以天为单位),在此时间段后,每天仅保留第一个快照。此时间段相对于此作业的最新快照的时间戳。有效值范围从
0到model_snapshot_retention_days。对于新作业,默认值为1。对于7.8.0版本之前创建的作业,默认值与model_snapshot_retention_days匹配。有关更多信息,请参阅模型快照。从 Elasticsearch 8.10.0 开始,使用了一个新的版本号来跟踪机器学习插件中的配置和状态变化。这个新的版本号与产品版本解耦,并将独立递增。
-
data_description -
(必需,对象) 数据描述定义了在使用post data API向作业发送数据时输入数据的格式。请注意,当使用数据馈送时,只需设置
time_field,其余属性会自动设置。当通过post data API接收数据时,数据不会存储在Elasticsearch中。仅保留异常检测的结果。Properties of
data_description-
format -
(字符串) 目前仅支持
xcontent格式,这是默认值。 -
time_field -
(字符串) 包含时间戳的字段的名称。
默认值是
time。 -
time_format -
(字符串) 时间格式,可以是
epoch、epoch_ms或自定义模式。默认值是epoch,表示 UNIX 或 Epoch 时间(自 1970 年 1 月 1 日以来的秒数)。值epoch_ms表示时间是从 Epoch 时间以来的毫秒数。epoch和epoch_ms时间格式接受整数或实数值。
自定义模式必须符合 Java
DateTimeFormatter类。 在使用日期时间格式化模式时,建议您提供完整的日期、时间和时区。例如:yyyy-MM-dd'T'HH:mm:ssX。 如果您指定的模式不足以生成完整的 timestamp,作业创建将失败。
-
-
datafeed_config -
(可选,对象) 数据馈送,用于从Elasticsearch中检索数据,供作业分析。每个异常检测作业只能关联一个数据馈送。
Properties of
datafeed-
aggregations - (可选, 对象) 如果设置,数据馈送执行聚合搜索。对聚合的支持有限,应仅与低基数数据一起使用。有关更多信息,请参阅 Aggregating data for faster performance。
-
chunking_config -
(可选, 对象) 数据馈送可能需要搜索长时间段,例如几个月或几年。为了确保Elasticsearch的负载得到管理,这种搜索被分割成时间块。块配置控制这些时间块的大小如何计算,这是一个高级配置选项。
Properties of
chunking_config-
mode -
(字符串) 有三种可用模式:
-
auto: 块大小是动态计算的。这是默认值,当数据馈送不使用聚合时推荐使用。 -
manual: 根据指定的time_span应用分块。当数据馈送使用聚合时使用此模式。 -
off: 不应用分块。
-
-
time_span -
(时间单位)
每个搜索将查询的时间跨度。此设置仅在模式设置为
manual时适用。例如:3h。
-
-
datafeed_id -
(可选, 字符串) 一个唯一标识数据流的数字字符串。此标识符可以包含小写字母数字字符(a-z 和 0-9)、连字符和下划线。它必须以字母数字字符开头和结尾。
默认为与异常检测作业相同的ID。
-
delayed_data_check_config -
(可选, 对象) 指定数据馈送是否检查缺失数据以及窗口的大小。例如:
{"enabled": true, "check_window": "1h"}。数据馈送可以选择性地搜索已经读取的索引,以确定是否有数据随后被添加到索引中。如果发现数据缺失,这表明
query_delay选项设置过低,数据在数据馈送通过该时间点后才被索引。请参阅处理延迟数据。此检查仅在实时数据馈送上运行。
Properties of
delayed_data_check_config-
check_window -
(时间单位)
搜索延迟数据的时间窗口。此窗口以最新的最终桶结束。它默认为
null,这会导致在实时数据馈送运行时计算适当的check_window。特别是,默认的check_window跨度计算基于2h或8 * bucket_span的最大值。 -
enabled -
(布尔值)
指定数据馈送是否定期检查延迟数据。默认为
true。
-
-
frequency -
(可选, 时间单位)
数据馈送在实时运行时计划查询的时间间隔。默认值是短桶跨度的桶跨度,或长桶跨度的桶跨度的一个合理分数。例如:
150s。当frequency短于桶跨度时,最后(部分)桶的临时结果会被写入,然后最终被完整桶的结果覆盖。如果数据馈送使用聚合,此值必须可被日期直方图聚合的间隔整除。 -
indices -
(必需,数组) 索引名称的数组。支持通配符。例如:
["it_ops_metrics", "server*"]。如果任何索引位于远程集群中,则机器学习节点需要具有
remote_cluster_client角色。 -
indices_options -
(可选, 对象) 指定在搜索期间使用的索引扩展选项。
例如:
{ "expand_wildcards": ["all"], "ignore_unavailable": true, "allow_no_indices": "false", "ignore_throttled": true }有关这些选项的更多信息,请参阅多目标语法。
-
max_empty_searches -
(可选, 整数)
如果实时数据馈送从未看到任何数据(包括在任何初始训练期间),则它将在返回无文档的实时搜索次数达到此值后自动停止并关闭其关联的作业。换句话说,它将在实时操作的
frequency乘以max_empty_searches次后停止。如果未设置,则没有结束时间且未看到数据的数据馈送将保持启动状态,直到明确停止。默认情况下,此设置未设置。 -
query -
(可选, 对象)
Elasticsearch查询领域特定语言(DSL)。此值对应于Elasticsearch搜索POST正文中的查询对象。Elasticsearch支持的所有选项都可以使用,因为此对象按原样传递给Elasticsearch。默认情况下,此属性具有以下值:
{"match_all": {"boost": 1}}。 -
query_delay -
(可选, 时间单位)
查询数据落后于实时的时间秒数。例如,如果10:04 a.m.的数据可能直到10:06 a.m.才可在Elasticsearch中搜索,请将此属性设置为120秒。默认值在
60s和120s之间随机选择。这种随机性在同一节点上运行多个作业时提高了查询性能。有关更多信息,请参阅 Handling delayed data。 -
runtime_mappings -
(可选, 对象) 指定数据馈送搜索的运行时字段。
例如:
{ "day_of_week": { "type": "keyword", "script": { "source": "emit(doc['@timestamp'].value.dayOfWeekEnum.getDisplayName(TextStyle.FULL, Locale.ENGLISH))" } } } -
script_fields - (可选, 对象) 指定评估自定义表达式并返回脚本字段到数据馈送的脚本。作业中的检测器配置对象可以包含使用这些脚本字段的功能。有关更多信息,请参阅 Transforming data with script fields 和 Script fields。
-
scroll_size -
(可选, 无符号整数)
当数据馈送不使用聚合时,在Elasticsearch搜索中使用的
size参数。默认值为1000。最大值为index.max_result_window的值,默认值为10,000。
-
-
description - (可选, 字符串) 作业的描述。
-
groups - (可选, 字符串数组) 一组作业组。一个作业可以不属于任何组,也可以属于多个组。
-
model_plot_config -
(可选, 对象) 此高级配置选项将模型信息与结果一起存储。它提供了对异常检测的更详细视图。
如果您启用模型绘图,它可能会显著增加系统的性能开销;对于包含许多实体的任务来说,这是不可行的。
模型图提供了一个简化和指示性的模型及其边界视图。它不显示复杂特征,如多元相关性或多模态数据。因此,可能会偶尔报告一些在模型图中无法看到的异常。
模型绘图配置可以在创建作业时或稍后更新时进行配置。如果遇到性能问题,必须禁用它。
Properties of
model_plot_config-
annotations_enabled -
(布尔值)
如果为真,则启用计算和存储正在分析的每个实体的模型变化注释。默认为
enabled。 -
enabled - (布尔值) 如果为真,则启用计算和存储正在分析的每个实体的模型边界。默认情况下,此功能未启用。
-
terms -
[preview]
此功能处于技术预览阶段,可能会在未来的版本中进行更改或移除。Elastic 将努力修复任何问题,但技术预览中的功能不受官方 GA 功能支持 SLA 的约束。
(字符串)
将数据收集限制为此逗号分隔的分区或字段值列表。如果未指定术语或为空字符串,则不应用过滤。例如,"CPU,NetworkIn,DiskWrites"。不支持通配符。使用单指标查看器时,只能查看指定的
terms。
-
-
model_snapshot_retention_days -
(可选,长整型)
高级配置选项,影响此作业的旧模型快照的自动删除。它指定快照保留的最大时间(以天为单位)。此时间段相对于此作业的最新快照的时间戳。默认值为
10,这意味着比最新快照早十天的快照将被删除。有关更多信息,请参阅 模型快照。 -
renormalization_window_days -
(可选, 长整型)
高级配置选项。在新数据出现时,调整分数所覆盖的时间段。默认值是30天或100个
bucket_spans中较长的一个。 -
results_index_name -
(可选,字符串)
一个影响机器学习结果索引名称的文本字符串。默认值为
shared,它生成一个名为.ml-anomalies-shared的索引。 -
results_retention_days - (可选, 长整型) 高级配置选项。结果保留的时间段(以天为单位)。年龄是相对于最新桶结果的时间戳计算的。如果此属性具有非空值,则在每天的00:30(服务器时间),将删除比最新桶结果早指定天数的结果。默认值为null,这意味着所有结果都将保留。系统生成的注释也计入保留结果;它们在相同天数后被删除。用户添加的注释将永久保留。
示例
edit创建一个异常检测作业和数据馈送:
PUT _ml/anomaly_detectors/test-job1?pretty
{
"analysis_config": {
"bucket_span": "15m",
"detectors": [
{
"detector_description": "Sum of bytes",
"function": "sum",
"field_name": "bytes"
}
]
},
"data_description": {
"time_field": "timestamp",
"time_format": "epoch_ms"
},
"analysis_limits": {
"model_memory_limit": "11MB"
},
"model_plot_config": {
"enabled": true,
"annotations_enabled": true
},
"results_index_name": "test-job1",
"datafeed_config":
{
"indices": [
"kibana_sample_data_logs"
],
"query": {
"bool": {
"must": [
{
"match_all": {}
}
]
}
},
"runtime_mappings": {
"hour_of_day": {
"type": "long",
"script": {
"source": "emit(doc['timestamp'].value.getHour());"
}
}
},
"datafeed_id": "datafeed-test-job1"
}
}
API返回以下结果:
{
"job_id" : "test-job1",
"job_type" : "anomaly_detector",
"job_version" : "8.4.0",
"create_time" : 1656087283340,
"datafeed_config" : {
"datafeed_id" : "datafeed-test-job1",
"job_id" : "test-job1",
"authorization" : {
"roles" : [
"superuser"
]
},
"query_delay" : "61499ms",
"chunking_config" : {
"mode" : "auto"
},
"indices_options" : {
"expand_wildcards" : [
"open"
],
"ignore_unavailable" : false,
"allow_no_indices" : true,
"ignore_throttled" : true
},
"query" : {
"bool" : {
"must" : [
{
"match_all" : { }
}
]
}
},
"indices" : [
"kibana_sample_data_logs"
],
"scroll_size" : 1000,
"delayed_data_check_config" : {
"enabled" : true
},
"runtime_mappings" : {
"hour_of_day" : {
"type" : "long",
"script" : {
"source" : "emit(doc['timestamp'].value.getHour());"
}
}
}
},
"analysis_config" : {
"bucket_span" : "15m",
"detectors" : [
{
"detector_description" : "Sum of bytes",
"function" : "sum",
"field_name" : "bytes",
"detector_index" : 0
}
],
"influencers" : [ ],
"model_prune_window" : "30d"
},
"analysis_limits" : {
"model_memory_limit" : "11mb",
"categorization_examples_limit" : 4
},
"data_description" : {
"time_field" : "timestamp",
"time_format" : "epoch_ms"
},
"model_plot_config" : {
"enabled" : true,
"annotations_enabled" : true
},
"model_snapshot_retention_days" : 10,
"daily_model_snapshot_retention_after_days" : 1,
"results_index_name" : "custom-test-job1",
"allow_lazy_open" : false
}
创建日历 API
edit实例化一个日历。
请求
editPUT _ml/calendars/
先决条件
edit需要 manage_ml 集群权限。此权限包含在 machine_learning_admin 内置角色中。
路径参数
edit-
<calendar_id> - (必需, 字符串) 一个唯一标识日历的字符串。
请求体
edit-
description - (可选, 字符串) 日历的描述。
示例
editPUT _ml/calendars/planned-outages
当创建日历时,您会收到以下结果:
{
"calendar_id": "planned-outages",
"job_ids": []
}
创建数据流 API
edit实例化一个数据馈送。
请求
editPUT _ml/datafeeds/
先决条件
edit- 在创建数据馈送之前,您必须创建一个异常检测作业。
-
需要以下权限:
-
cluster:
manage_ml(themachine_learning_admin内置角色授予此权限) -
数据馈送中配置的源索引:
read
-
cluster:
描述
edit数据馈送从Elasticsearch中检索数据,以供异常检测作业进行分析。每个异常检测作业只能关联一个数据馈送。
数据馈送包含一个以定义的时间间隔(frequency)运行的查询。如果您担心数据延迟,可以在每个间隔添加一个延迟(query_delay)。请参阅处理延迟数据。
-
您必须使用Kibana、此API或创建异常检测作业API来创建数据馈送。不要直接使用Elasticsearch索引API将数据馈送添加到
.ml-config索引中。如果启用了Elasticsearch安全功能,请不要为用户提供.ml-config索引的write权限。 - 当启用了Elasticsearch安全功能时,您的数据馈送会记住创建它的用户在创建时拥有的角色,并使用这些相同的角色运行查询。如果您提供了二次授权头,则将使用这些凭据。
路径参数
edit-
<feed_id> - (必需, 字符串) 一个唯一标识数据流的数字字符串。此标识符可以包含小写字母数字字符(a-z 和 0-9)、连字符和下划线。它必须以字母数字字符开头和结尾。
查询参数
edit-
allow_no_indices -
(可选,布尔值) 如果为
true,则通配符索引表达式解析为无具体索引时将被忽略。这包括_all字符串或未指定索引的情况。默认为true。 -
expand_wildcards -
(可选,字符串) 通配符模式可以匹配的索引类型。如果请求可以针对数据流,此参数确定通配符表达式是否匹配隐藏的数据流。支持逗号分隔的值,例如
open,hidden。有效值为:-
all - 匹配任何数据流或索引,包括 隐藏的 数据流和索引。
-
open - 匹配开放的、非隐藏的索引。同时也匹配任何非隐藏的数据流。
-
closed - 匹配关闭的、非隐藏的索引。同时也匹配任何非隐藏的数据流。数据流不能被关闭。
-
hidden -
匹配隐藏的数据流和隐藏的索引。必须与
open、closed或两者结合使用。 -
none - 不接受通配符模式。
默认为
open。 -
-
ignore_throttled -
(可选,布尔值) 如果为
true,冻结时会忽略具体的、扩展的或别名的索引。默认为true。[7.16.0] 在7.16.0中已弃用。
-
ignore_unavailable -
(可选,布尔值) 如果为
true,则忽略不可用的索引(缺失或关闭)。默认为false。
请求体
edit-
aggregations - (可选, 对象) 如果设置,数据馈送执行聚合搜索。聚合的支持是有限的,并且应该仅用于低基数数据。更多信息,请参阅 聚合数据以加快性能。
-
chunking_config -
(可选, 对象) 数据馈送可能需要搜索长时间段,例如几个月或几年。为了确保Elasticsearch的负载得到管理,这种搜索被分割成时间块。块配置控制这些时间块的大小如何计算,这是一个高级配置选项。
Properties of
chunking_config-
mode -
(字符串) 有三种可用模式:
-
auto: 块大小是动态计算的。这是默认值,并且在数据馈送不使用聚合时推荐使用。 -
manual: 根据指定的time_span应用分块。当数据馈送使用聚合时使用此模式。 -
off: 不应用分块。
-
-
time_span -
(时间单位)
每个搜索将查询的时间跨度。此设置仅在模式设置为
manual时适用。例如:3h。
-
-
delayed_data_check_config -
(可选, 对象) 指定数据馈送是否检查缺失数据以及窗口的大小。例如:
{"enabled": true, "check_window": "1h"}。数据馈送可以选择性地搜索已经读取的索引,以确定是否有数据随后被添加到索引中。如果发现数据缺失,这表明
query_delay选项设置过低,数据在数据馈送通过该时间点后才被索引。请参阅处理延迟数据。此检查仅在实时数据馈送上运行。
Properties of
delayed_data_check_config-
check_window -
(时间单位)
搜索延迟数据的窗口时间。此窗口时间以最新的最终化桶结束。它默认为
null,这会在实时数据馈送运行时计算适当的check_window。特别是,默认的check_window跨度计算基于2h或8 * bucket_span的最大值。 -
enabled -
(布尔值)
指定数据馈送是否定期检查延迟数据。默认为
true。
-
-
frequency -
(可选, 时间单位)
在数据馈送实时运行时,计划查询的时间间隔。默认值是短桶跨度的桶跨度,或者对于较长的桶跨度,是桶跨度的一个合理分数。例如:
150s。当frequency比桶跨度短时,最后一个(部分)桶的临时结果会被写入,然后最终被完整的桶结果覆盖。如果数据馈送使用聚合,此值必须能被日期直方图聚合的间隔整除。 -
indices -
(必需,数组) 索引名称的数组。支持通配符。例如:
["it_ops_metrics", "server*"]。如果任何索引位于远程集群中,则机器学习节点需要具有
remote_cluster_client角色。 -
indices_options -
(可选, 对象) 指定在搜索期间使用的索引扩展选项。
例如:
{ "expand_wildcards": ["all"], "ignore_unavailable": true, "allow_no_indices": "false", "ignore_throttled": true }有关这些选项的更多信息,请参阅多目标语法。
-
job_id - (必需,字符串) 异常检测作业的标识符。
-
max_empty_searches -
(可选,整数)
如果一个实时数据馈送从未见过任何数据(包括在任何初始训练期间),那么它将在返回无文档的实时搜索达到此数量后自动停止并关闭其关联的作业。换句话说,它将在实时操作中停止
frequency乘以max_empty_searches次。如果未设置,则没有结束时间且未见任何数据的数据馈送将保持启动状态,直到明确停止。默认情况下,此设置未设置。 -
query -
(可选, 对象)
Elasticsearch 查询领域特定语言 (DSL)。此值对应于 Elasticsearch 搜索 POST 请求体中的 query 对象。所有 Elasticsearch 支持的选项都可以使用,因为这个对象会原封不动地传递给 Elasticsearch。默认情况下,此属性具有以下值:
{"match_all": {"boost": 1}}。 -
query_delay -
(可选,时间单位)
查询数据时,数据比实时时间落后的秒数。例如,如果10:04 a.m.的数据可能直到10:06 a.m.才能在Elasticsearch中搜索到,请将此属性设置为120秒。默认值在
60s和120s之间随机选择。这种随机性在同一节点上运行多个作业时提高了查询性能。有关更多信息,请参阅处理延迟数据。 -
runtime_mappings -
(可选, 对象) 指定数据馈送搜索的运行时字段。
例如:
{ "day_of_week": { "type": "keyword", "script": { "source": "emit(doc['@timestamp'].value.dayOfWeekEnum.getDisplayName(TextStyle.FULL, Locale.ENGLISH))" } } } -
script_fields - (可选,对象) 指定用于评估自定义表达式并返回脚本字段的脚本。作业中的检测器配置对象可以包含使用这些脚本字段的函数。有关更多信息,请参阅 使用脚本字段转换数据 和 脚本字段。
-
scroll_size -
(可选,无符号整数)
在 Elasticsearch 搜索中使用的
size参数,当数据馈送不使用聚合时。默认值为1000。最大值为index.max_result_window的值,默认情况下为 10,000。
示例
edit为异常检测作业创建一个数据源(test-job):
PUT _ml/datafeeds/datafeed-test-job?pretty
{
"indices": [
"kibana_sample_data_logs"
],
"query": {
"bool": {
"must": [
{
"match_all": {}
}
]
}
},
"job_id": "test-job"
}
当数据馈送创建时,您会收到以下结果:
{
"datafeed_id" : "datafeed-test-job",
"job_id" : "test-job",
"authorization" : {
"roles" : [
"superuser"
]
},
"query_delay" : "91820ms",
"chunking_config" : {
"mode" : "auto"
},
"indices_options" : {
"expand_wildcards" : [
"open"
],
"ignore_unavailable" : false,
"allow_no_indices" : true,
"ignore_throttled" : true
},
"query" : {
"bool" : {
"must" : [
{
"match_all" : { }
}
]
}
},
"indices" : [
"kibana_sample_data_logs"
],
"scroll_size" : 1000,
"delayed_data_check_config" : {
"enabled" : true
}
}
创建过滤器 API
edit实例化一个过滤器。
请求
editPUT _ml/filters/
先决条件
edit需要 manage_ml 集群权限。此权限包含在 machine_learning_admin 内置角色中。
路径参数
edit-
<filter_id> - (必需, 字符串) 一个唯一标识过滤器的字符串。
请求体
edit-
description - (可选,字符串) 过滤器的描述。
-
items -
(必需,字符串数组) 过滤器的项目。通配符
*可以用于项目的开头或结尾。每个过滤器中最多允许 10000 个项目。
示例
editPUT _ml/filters/safe_domains
{
"description": "A list of safe domains",
"items": ["*.google.com", "wikipedia.org"]
}
当创建过滤器时,您会收到以下响应:
{
"filter_id": "safe_domains",
"description": "A list of safe domains",
"items": ["*.google.com", "wikipedia.org"]
}
删除日历 API
edit删除一个日历。
请求
editDELETE _ml/calendars/
先决条件
edit需要 manage_ml 集群权限。此权限包含在 machine_learning_admin 内置角色中。
描述
edit此API从日历中移除所有预定的事件,然后删除日历。
路径参数
edit-
<calendar_id> - (必需, 字符串) 一个唯一标识日历的字符串。
删除数据流 API
edit删除现有的数据馈送。
请求
editDELETE _ml/datafeeds/
先决条件
edit-
需要
manage_ml集群权限。此权限包含在machine_learning_admin内置角色中。 -
除非使用
force参数,否则必须在删除之前停止数据馈送。
路径参数
edit-
<feed_id> - (必需,字符串) 一个唯一标识数据流的数字字符串。此标识符可以包含小写字母数字字符(a-z 和 0-9)、连字符和下划线。它必须以字母数字字符开头和结尾。
查询参数
edit-
force - (可选,布尔值) 用于强制删除一个已启动的数据馈送;此方法比停止并删除数据馈送更快。
从日历 API 删除事件
edit从日历中删除预定的事件。
请求
editDELETE _ml/calendars/
前提条件
edit需要 manage_ml 集群权限。此权限包含在 machine_learning_admin 内置角色中。
路径参数
edit-
<calendar_id> - (必需, 字符串) 一个唯一标识日历的字符串。
-
<event_id> - (必需,字符串) 计划事件的标识符。您可以通过使用 获取计划事件 API 来获取此标识符。
示例
editDELETE _ml/calendars/planned-outages/events/LS8LJGEBMTCMA-qz49st
当事件被移除时,您会收到以下结果:
{
"acknowledged": true
}
删除过滤器 API
edit删除一个过滤器。
请求
editDELETE _ml/filters/
先决条件
edit需要 manage_ml 集群权限。此权限包含在 machine_learning_admin 内置角色中。
路径参数
edit-
<filter_id> - (必需, 字符串) 一个唯一标识过滤器的字符串。
删除预测 API
edit从机器学习作业中删除预测。
请求
editDELETE _ml/anomaly_detectors/
DELETE _ml/anomaly_detectors/
DELETE _ml/anomaly_detectors/
先决条件
edit需要 manage_ml 集群权限。此权限包含在 machine_learning_admin 内置角色中。
描述
edit默认情况下,预测会保留14天。您可以通过forecast jobs API中的expires_in参数指定不同的保留期限。删除预测API使您能够在预测过期之前删除一个或多个预测。
当你删除一个作业时,与其相关的预测也会被删除。
有关更多信息,请参阅 预测未来。
路径参数
edit-
<forecast_id> -
(可选,字符串) 一个逗号分隔的预测标识符列表。如果你不指定这个可选参数,或者你指定
_all或*,API 将删除作业中的所有预测。 -
<job_id> - (必需, 字符串) 异常检测作业的标识符。
查询参数
edit-
allow_no_forecasts -
(可选,布尔值) 指定在没有预测时是否发生错误。特别是,如果此参数设置为
false并且没有与作业关联的预测,尝试删除所有预测将返回错误。默认值为true。 -
timeout -
(可选,时间单位) 指定等待删除操作完成的时间段。当此时间段过去后,
API将失败并返回错误。默认值为
30s。
示例
editDELETE _ml/anomaly_detectors/total-requests/_forecast/_all
如果请求没有遇到错误,您将收到以下结果:
{
"acknowledged": true
}
删除异常检测作业 API
edit删除现有的异常检测作业。
请求
editDELETE _ml/anomaly_detectors/
前提条件
edit-
需要
manage_ml集群权限。此权限包含在machine_learning_admin内置角色中。 -
在删除作业之前,您必须关闭它(除非指定了
force参数)。请参阅 关闭作业。
描述
edit所有作业配置、模型状态和结果均被删除。
删除异常检测作业必须仅通过此API完成。不要使用Elasticsearch删除文档API直接从.ml-*索引中删除作业。当启用了Elasticsearch安全功能时,确保没有向任何人授予对.ml-*索引的write权限。
目前无法使用通配符或逗号分隔列表删除多个作业。
如果你删除一个带有数据馈送的作业,请求首先尝试删除数据馈送。这种行为等同于使用与删除作业请求相同的timeout和force参数调用删除数据馈送API。
路径参数
edit-
<job_id> - (必需, 字符串) 异常检测作业的标识符。
查询参数
edit-
force - (可选,布尔值) 用于强制删除一个已打开的任务;此方法比先关闭再删除任务更快。
-
wait_for_completion -
(可选,布尔值) 指定请求是否应立即返回或等待作业删除完成。默认为
true。 -
delete_user_annotations -
(可选,布尔值) 指定在重置作业时,是否应删除用户添加的注释以及任何自动生成的注释。默认为
false。
示例
editDELETE _ml/anomaly_detectors/total-requests
当作业被删除时,您会收到以下结果:
{
"acknowledged": true
}
在下一个示例中,我们异步删除 total-requests 作业:
DELETE _ml/anomaly_detectors/total-requests?wait_for_completion=false
当 wait_for_completion 设置为 false 时,响应包含作业删除任务的ID:
{
"task": "oTUltX4IQMOUUVeiohTt8A:39"
}
从日历API中删除异常检测作业
edit从日历中删除异常检测作业。
请求
editDELETE _ml/calendars/
先决条件
edit需要 manage_ml 集群权限。此权限包含在 machine_learning_admin 内置角色中。
路径参数
edit-
<calendar_id> - (必需, 字符串) 一个唯一标识日历的字符串。
-
<job_id> - (必需,字符串) 异常检测作业的标识符。它可以是作业标识符、组名或逗号分隔的作业或组列表。
示例
editDELETE _ml/calendars/planned-outages/jobs/total-requests
当任务从日历中移除时,您会收到以下结果:
{
"calendar_id": "planned-outages",
"job_ids": []
}
删除模型快照 API
edit删除现有的模型快照。
请求
editDELETE _ml/anomaly_detectors/
先决条件
edit需要 manage_ml 集群权限。此权限包含在 machine_learning_admin 内置角色中。
描述
edit您不能删除活动模型快照。要删除该快照,请先恢复到其他快照。要识别活动模型快照,请参考get jobs API结果中的model_snapshot_id。
路径参数
edit-
<job_id> - (必需,字符串) 异常检测作业的标识符。
-
<snapshot_id> - (必需,字符串) 模型快照的标识符。
示例
editDELETE _ml/anomaly_detectors/farequote/model_snapshots/1491948163
当快照被删除时,您会收到以下结果:
{
"acknowledged": true
}
删除过期数据 API
edit删除过期且未使用的机器学习数据。
前提条件
edit需要 manage_ml 集群权限。此权限包含在 machine_learning_admin 内置角色中。
描述
edit删除所有已超过其保留天数期限的作业结果、模型快照和预测数据。同时也会删除与任何作业无关的机器学习状态文档。
您可以通过使用作业标识符、组名称、逗号分隔的作业列表或通配符表达式,将请求限制为单个或一组异常检测作业。您可以通过使用_all,将*指定为,或者省略来删除所有异常检测作业的过期数据。
路径参数
edit-
<job_id> - (可选, 字符串) 异常检测作业的标识符。它可以是作业标识符、组名或通配符表达式。
查询参数
edit-
requests_per_second - (可选, 浮点数) 删除过程所需的每秒请求数。 默认行为是不进行限制。
-
timeout -
(可选,字符串) 底层删除过程可以运行多长时间,直到它们被取消。
默认值是
8h(8小时)。
请求体
edit您还可以在请求体中指定查询参数(requests_per_second 和 timeout)。
估计异常检测作业模型内存 API
edit对异常检测作业模型的内存使用量进行估算。它是基于作业的分析配置详细信息以及它所引用的字段的基数估计。
请求
editPOST _ml/anomaly_detectors/_estimate_model_memory
先决条件
edit需要 manage_ml 集群权限。此权限包含在 machine_learning_admin 内置角色中。
请求体
edit-
analysis_config -
(必需, 对象)
有关在此 API 的请求体中
analysis_config组件可以指定的属性列表,请参阅analysis_config。 -
max_bucket_cardinality -
(必需*, 对象)
在作业分析数据的时间段内,观察到的影响者字段在单个桶中的最高基数估计值。为了得到良好的答案,必须为所有影响者字段提供值。为未列为
影响者的字段提供值不会影响估计。
*如果没有影响者,则可以从请求中省略。 -
overall_cardinality -
(必需*, 对象)
在整个作业分析数据的时间段内,为字段观察到的基数估计值。为了得到一个好的答案,必须为任何检测器中的
by_field_name、over_field_name和partition_field_name引用的字段提供值。为其他字段提供值不会影响估计。
*如果没有任何检测器具有by_field_name、over_field_name或partition_field_name,则可以从请求中省略。
示例
editPOST _ml/anomaly_detectors/_estimate_model_memory
{
"analysis_config": {
"bucket_span": "5m",
"detectors": [
{
"function": "sum",
"field_name": "bytes",
"by_field_name": "status",
"partition_field_name": "app"
}
],
"influencers": [ "source_ip", "dest_ip" ]
},
"overall_cardinality": {
"status": 10,
"app": 50
},
"max_bucket_cardinality": {
"source_ip": 300,
"dest_ip": 30
}
}
估计返回以下结果:
{
"model_memory_estimate": "21mb"
}
刷新作业 API
edit强制将任何缓冲的数据通过作业进行处理。
请求
editPOST _ml/anomaly_detectors/
先决条件
edit需要 manage_ml 集群权限。此权限包含在 machine_learning_admin 内置角色中。
描述
edit刷新作业 API 仅适用于使用 post data API 发送数据进行分析时。根据缓冲区的内容,它可能还会额外计算新的结果。
flush 和 close 操作类似,但如果您预计要发送更多数据进行分析,flush 更为高效。在执行 flush 操作时,作业保持打开状态,并可继续用于分析数据。close 操作还会修剪并将模型状态持久化到磁盘,并且必须在分析更多数据之前重新打开作业。
路径参数
edit-
<job_id> - (必需,字符串) 异常检测作业的标识符。
查询参数
edit-
advance_time - (字符串) 可选。指定前进到特定的时间值。生成结果并为指定时间间隔内的数据更新模型。
-
calc_interim - (布尔值) 可选。如果为 true,则计算最近一个桶或延迟周期内所有桶的中间结果。
-
end -
(字符串) 可选。当与
calc_interim和start一起使用时, 指定要在其上计算中间结果的存储桶范围。 -
skip_time - (字符串) 可选。指定跳到特定的时间值。不会生成结果,并且模型不会更新指定时间间隔内的数据。
-
start -
(字符串) 可选。当与
calc_interim一起使用时,指定计算中间结果的桶的范围。
请求体
edit您还可以在请求体中指定查询参数(例如 advance_time 和
calc_interim)。
示例
editPOST _ml/anomaly_detectors/low_request_rate/_flush
{
"calc_interim": true
}
当操作成功时,您会收到以下结果:
{
"flushed": true,
"last_finalized_bucket_end": 1455234900000
}
The last_finalized_bucket_end 提供了最后一个已处理桶的结束时间戳(自纪元以来的毫秒数)。
如果你想将作业刷新到特定的时间戳,可以使用
advance_time 或 skip_time 参数。例如,要前进到2018年1月1日格林尼治标准时间上午11点:
POST _ml/anomaly_detectors/total-requests/_flush
{
"advance_time": "1514804400000"
}
当操作成功时,您会收到以下结果:
{
"flushed": true,
"last_finalized_bucket_end": 1514804400000
}
预测作业 API
edit通过使用时间序列的历史行为来预测其未来行为。
请求
editPOST _ml/anomaly_detectors/
先决条件
edit需要 manage_ml 集群权限。此权限包含在 machine_learning_admin 内置角色中。
描述
edit您可以根据异常检测作业创建预测作业,以推断未来的行为。请参阅 预测未来 和 预测限制以了解更多信息。
您可以通过使用 删除预测 API来删除预测。
-
不支持对执行人口分析的任务进行预测;如果您尝试为配置中具有
over_field_name属性的任务创建预测,将会发生错误。 - 创建预测时,任务必须处于打开状态。否则,将会发生错误。
路径参数
edit-
<job_id> - (必需, 字符串) 异常检测作业的标识符。
查询参数
edit请求体
edit您还可以在请求体中指定查询参数(例如 duration 和 expires_in)。
示例
editPOST _ml/anomaly_detectors/low_request_rate/_forecast
{
"duration": "10d"
}
当预测创建时,您会收到以下结果:
{
"acknowledged": true,
"forecast_id": "wkCWa2IB2lF8nSE_TzZo"
}
您随后可以在 Kibana 的 单一指标查看器 中查看预测。
获取存储桶 API
edit检索一个或多个桶的异常检测作业结果。
先决条件
edit需要 monitor_ml 集群权限。此权限包含在 machine_learning_user 内置角色中。
描述
editget buckets API 按桶分组,以时间顺序展示记录。
路径参数
edit-
<job_id> - (必需, 字符串) 异常检测作业的标识符。
-
<timestamp> - (可选,字符串) 单个桶结果的时间戳。如果您不指定此参数,API将返回有关所有桶的信息。
查询参数
edit-
anomaly_score -
(可选,双精度) 返回异常分数大于或等于此值的桶。默认为
0.0。 -
desc -
(可选,布尔值) 如果为 true,则桶按降序排序。
默认为
false。 -
end -
(可选,字符串) 返回时间戳早于该时间的水桶。
默认为
-1,这意味着它未设置,结果不受特定时间戳的限制。 -
exclude_interim -
(可选, 布尔值)
如果为
true,输出将排除中间结果。默认为false,这意味着中间结果会被包含。 -
expand -
(可选,布尔值) 如果为 true,输出将包含异常记录。默认为
false。 -
from -
(可选,整数) 跳过指定数量的桶。默认为
0。 -
size -
(可选,整数) 指定要获取的最大桶数。默认为
100。 -
sort -
(可选,字符串) 指定请求的桶的排序字段。默认情况下,桶按
timestamp字段排序。 -
start -
(可选,字符串) 返回时间戳在此时间之后的数据桶。默认为
-1,表示未设置,结果不受特定时间戳的限制。
请求体
edit您也可以在请求体中指定查询参数;例外的是from和size,请使用page代替:
-
page -
属性
page-
from -
(可选, 整数) 跳过指定数量的桶。默认为
0。 -
size -
(可选, 整数) 指定要获取的最大桶数。默认为
100。
-
响应体
editAPI返回一个存储桶对象数组,这些对象具有以下属性:
-
anomaly_score - (数字) 任何桶影响者的最大异常分数,介于0-100之间。这是作业的一个整体、速率限制的分数。桶中的所有异常记录都对此分数有贡献。随着新数据的分析,此值可能会更新。
-
bucket_influencers -
(数组) 一个包含桶影响者对象的数组。
Properties of
bucket_influencers-
anomaly_score - (数字) 一个在0-100之间的标准化分数,为每个桶影响者计算。这个分数可能会随着新数据的分析而更新。
-
bucket_span -
(数字) 桶的长度,以秒为单位。这个值与作业中指定的
bucket_span相匹配。 -
influencer_field_name - (字符串) 影响者的字段名称。
-
initial_anomaly_score - (数字) 每个桶影响者的分数在0-100之间。这个分数是在处理桶时计算的初始值。
-
is_interim -
(布尔值)
如果
true,这是一个临时结果。换句话说,结果是基于部分输入数据计算的。 -
job_id - (字符串) 异常检测作业的标识符。
-
probability -
(数字) 桶具有这种行为的概率,范围在0到1之间。这个值可以保持超过300位小数的高精度,因此提供了
anomaly_score作为人类可读和友好的解释。 -
raw_anomaly_score - (数字) 内部使用。
-
result_type -
(字符串) 内部使用。这个值总是设置为
bucket_influencer。 -
timestamp - (日期) 计算这些结果的桶的开始时间。
-
-
bucket_span -
(数字)
存储桶的长度,以秒为单位。该值与作业中指定的
bucket_span相匹配。 -
event_count - (数字) 在此桶中处理的数据记录数量。
-
initial_anomaly_score -
(数字) 任何桶影响者的最大
anomaly_score。这是在处理桶时计算的初始值。 -
is_interim -
(布尔值)
如果
true,这是一个中间结果。换句话说,结果是基于部分输入数据计算的。 -
job_id - (字符串) 异常检测作业的标识符。
-
processing_time_ms - (数字) 分析存储桶内容并计算结果所花费的时间,以毫秒为单位。
-
result_type -
(字符串) 内部使用。此值始终设置为
bucket。 -
timestamp -
(日期) 存储桶的开始时间。此时间戳唯一标识存储桶。
发生在桶时间戳上的事件会被包含在该桶的结果中。
示例
editGET _ml/anomaly_detectors/low_request_rate/results/buckets
{
"anomaly_score": 80,
"start": "1454530200001"
}
在这个例子中,API返回了一个符合指定分数和时间约束的单一结果:
{
"count" : 1,
"buckets" : [
{
"job_id" : "low_request_rate",
"timestamp" : 1578398400000,
"anomaly_score" : 91.58505459594764,
"bucket_span" : 3600,
"initial_anomaly_score" : 91.58505459594764,
"event_count" : 0,
"is_interim" : false,
"bucket_influencers" : [
{
"job_id" : "low_request_rate",
"result_type" : "bucket_influencer",
"influencer_field_name" : "bucket_time",
"initial_anomaly_score" : 91.58505459594764,
"anomaly_score" : 91.58505459594764,
"raw_anomaly_score" : 0.5758246639716365,
"probability" : 1.7340849573442696E-4,
"timestamp" : 1578398400000,
"bucket_span" : 3600,
"is_interim" : false
}
],
"processing_time_ms" : 0,
"result_type" : "bucket"
}
]
}
获取日历 API
edit检索日历的配置信息。
先决条件
edit需要 monitor_ml 集群权限。此权限包含在 machine_learning_user 内置角色中。
路径参数
edit-
<calendar_id> -
(必需, 字符串) 一个唯一标识日历的字符串。
您可以通过使用逗号分隔的ID列表或通配符表达式,在单个API请求中获取多个日历的信息。您可以通过使用
_all,将*指定为日历标识符,或者省略标识符来获取所有日历的信息。
查询参数
edit-
from -
(可选,整数) 跳过指定数量的日历。此参数仅在你省略
时才受支持。默认为0。 -
size -
(可选,整数) 指定要获取的最大日历数量。
此参数仅在你省略
时才受支持。默认值为100。
请求体
edit-
page -
page的属性-
from -
(可选, 整数) 跳过指定数量的日历。此对象仅在你省略
时受支持。默认为0。 -
size -
(可选, 整数) 指定要获取的最大日历数量。此对象仅在你省略
时受支持。默认为100。
-
响应体
editAPI返回一个日历资源数组,这些资源具有以下属性:
-
calendar_id - (字符串) 一个唯一标识日历的字符串。
-
job_ids -
(数组) 一个异常检测作业标识符的数组。例如:
["total-requests"]。
示例
editGET _ml/calendars/planned-outages
API返回以下结果:
{
"count": 1,
"calendars": [
{
"calendar_id": "planned-outages",
"job_ids": [
"total-requests"
]
}
]
}
获取分类 API
edit检索一个或多个类别的异常检测作业结果。
先决条件
edit需要 monitor_ml 集群权限。此权限包含在 machine_learning_user 内置角色中。
描述
edit当在作业配置中指定categorization_field_name时,可以查看生成的类别的定义。类别定义描述了匹配的常用术语,并包含匹配值的示例。
异常结果来自分类分析,可作为桶、影响者和记录结果使用。例如,结果可能表明在16:45时,日志消息类别11的计数异常。然后,您可以检查该类别的描述和示例。有关更多信息,请参阅分类日志消息。
路径参数
edit-
<job_id> - (必需, 字符串) 异常检测作业的标识符。
-
<category_id> -
(可选,长整型) 类别的标识符,在作业中是唯一的。如果你既没有指定类别ID,也没有指定
partition_field_value,API将返回所有类别的信息。如果你只指定了partition_field_value,它将返回指定分区的所有类别的信息。
查询参数
edit-
from -
(可选,整数) 跳过指定数量的类别。默认为
0。 -
partition_field_value - (可选, 字符串) 仅返回指定分区的类别。
-
size -
(可选, 整数) 指定要获取的最大类别数量。
默认为
100。
请求体
edit您还可以在请求体中指定partition_field_value查询参数。
-
page -
属性
page-
from -
(可选, 整数) 跳过指定数量的分类。默认为
0。 -
size -
(可选, 整数) 指定要获取的最大分类数量。
默认为
100。
-
响应体
editAPI返回一个类别对象数组,这些对象具有以下属性:
-
category_id -
(无符号整数) 类别的唯一标识符。
category_id在作业级别是唯一的,即使启用了按分区分类。 -
examples - (数组) 匹配该类别的实际值示例列表。
-
grok_pattern - [预览] 此功能处于技术预览阶段,可能会在未来的版本中进行更改或移除。Elastic 将努力修复任何问题,但技术预览中的功能不受官方 GA 功能支持 SLA 的约束。 (字符串) 一个 Grok 模式,可用于 Logstash 或摄取管道中,以从匹配类别的消息中提取字段。此字段是实验性的,可能会在未来的版本中进行更改或移除。找到的 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之后,才能保证这是最新准确的类别列表。
示例
editGET _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.*"
}
]
}
获取数据流 API
edit检索数据流的配置信息。
先决条件
edit需要 monitor_ml 集群权限。此权限包含在 machine_learning_user 内置角色中。
描述
edit此API最多返回10,000个数据源。
路径参数
edit-
<feed_id> -
(可选, 字符串) 数据流的标识符。它可以是数据流标识符或通配符表达式。
您可以通过使用逗号分隔的数据馈送列表或通配符表达式,在单个API请求中获取多个数据馈送的信息。您可以通过使用
_all,将*指定为数据馈送标识符,或者省略标识符来获取所有数据馈送的信息。
查询参数
edit-
allow_no_match -
(可选, 布尔值) 指定在请求时执行的操作:
- 包含通配符表达式且没有匹配的数据馈送。
-
包含
_all字符串或没有标识符且没有匹配项。 - 包含通配符表达式且只有部分匹配。
默认值为
true,在没有匹配项时返回一个空的datafeeds数组,在有部分匹配项时返回部分结果。如果此参数为false,则在没有任何匹配项或只有部分匹配项时,请求将返回404状态码。 -
exclude_generated - (可选,布尔值) 指示是否应在检索时从配置中移除某些字段。这允许配置以可接受的格式被检索,然后添加到另一个集群中。默认值为 false。
响应代码
edit-
404(Missing resources) -
如果
allow_no_match是false,此代码表示没有与请求匹配的资源,或者只有部分匹配的请求。
示例
editGET _ml/datafeeds/datafeed-high_sum_total_sales
API返回以下结果:
{
"count" : 1,
"datafeeds" : [
{
"datafeed_id" : "datafeed-high_sum_total_sales",
"job_id" : "high_sum_total_sales",
"authorization" : {
"roles" : [
"superuser"
]
},
"query_delay" : "93169ms",
"chunking_config" : {
"mode" : "auto"
},
"indices_options" : {
"expand_wildcards" : [
"open"
],
"ignore_unavailable" : false,
"allow_no_indices" : true,
"ignore_throttled" : true
},
"query" : {
"bool" : {
"filter" : [
{
"term" : {
"event.dataset" : "sample_ecommerce"
}
}
]
}
},
"indices" : [
"kibana_sample_data_ecommerce"
],
"scroll_size" : 1000,
"delayed_data_check_config" : {
"enabled" : true
}
}
]
}
获取数据馈送统计信息 API
edit检索数据馈送的使用信息。
请求
editGET _ml/datafeeds/
GET _ml/datafeeds/
GET _ml/datafeeds/_stats
GET _ml/datafeeds/_all/_stats
先决条件
edit需要 monitor_ml 集群权限。此权限包含在 machine_learning_user 内置角色中。
路径参数
edit-
<feed_id> -
(可选, 字符串) 数据流的标识符。它可以是数据流标识符或通配符表达式。
您可以通过使用逗号分隔的数据馈送列表或通配符表达式,在单个API请求中获取多个数据馈送的统计信息。您可以通过使用
_all,将*指定为数据馈送标识符,或者省略标识符来获取所有数据馈送的统计信息。
查询参数
edit-
allow_no_match -
(可选, 布尔值) 指定在请求时执行的操作:
- 包含通配符表达式且没有匹配的数据馈送。
-
包含
_all字符串或没有标识符且没有匹配项。 - 包含通配符表达式且只有部分匹配。
默认值为
true,在没有匹配项时返回一个空的datafeeds数组,在有部分匹配项时返回部分结果。如果此参数为false,则在没有任何匹配项或只有部分匹配项时,请求将返回404状态码。
响应体
editAPI返回一个数据馈送计数对象数组。所有这些属性都是信息性的;您无法更新它们的值。
-
assignment_explanation - (字符串) 仅对于已启动的数据馈送,包含与节点选择相关的消息。
-
datafeed_id - (字符串) 一个唯一标识数据源的数字字符串。此标识符可以包含小写字母数字字符(a-z 和 0-9)、连字符和下划线。它必须以字母数字字符开头和结尾。
-
node -
(对象) 仅对于已启动的数据馈送,此信息与启动数据馈送的节点相关。
详细信息
-
attributes -
(对象)
列出节点属性,例如
ml.machine_memory或ml.max_open_jobs设置。 -
ephemeral_id - (字符串) 节点的临时ID。
-
id - (字符串) 节点的唯一标识符。
-
name -
(字符串)
节点名称。例如,
0-o0tOo。 -
transport_address - (字符串) 接受传输HTTP连接的主机和端口。
-
-
running_state -
(对象) 包含此数据馈送的运行状态的对象。仅当数据馈送启动时才会提供。
详情
-
real_time_configured -
(布尔值) 指示数据馈送是否为“实时”;即数据馈送没有配置
end时间。 -
real_time_running -
(布尔值) 指示数据馈送是否已完成在可用历史数据上的运行。对于没有配置
end时间的数据馈送,这意味着数据馈送现在正在“实时”数据上运行。 -
search_interval -
(可选,对象)提供数据馈送已搜索的最新时间间隔。
详情
-
start_ms - 开始时间,以毫秒为单位的纪元时间。
-
end_ms - 结束时间,以毫秒为单位的纪元时间。
-
-
-
state -
(字符串) 数据馈送的状态,可以是以下值之一:
-
starting: 数据馈送已被请求启动但尚未开始。 -
started: 数据馈送正在主动接收数据。 -
stopping: 数据馈送已被请求优雅停止,并正在完成其最终操作。 -
stopped: 数据馈送已停止,除非重新启动,否则不会接收数据。
-
-
timing_stats -
(对象) 提供关于此数据馈送时间方面的统计信息的对象。
详情
-
average_search_time_per_bucket_ms - (double) 每个桶的平均搜索时间,以毫秒为单位。
-
bucket_count - (long) 处理的桶的数量。
-
exponential_average_search_time_per_hour_ms - (double) 每小时的指数平均搜索时间,以毫秒为单位。
-
job_id - 异常检测作业的标识符。
-
search_count - 数据馈送运行的搜索次数。
-
total_search_time_ms - 数据馈送花费的总搜索时间,以毫秒为单位。
-
响应代码
edit-
404(Missing resources) -
如果
allow_no_match是false,此代码表示没有与请求匹配的资源,或者只有部分匹配的请求。
示例
editGET _ml/datafeeds/datafeed-high_sum_total_sales/_stats
API返回以下结果:
{
"count" : 1,
"datafeeds" : [
{
"datafeed_id" : "datafeed-high_sum_total_sales",
"state" : "started",
"node" : {
"id" : "7bmMXyWCRs-TuPfGJJ_yMw",
"name" : "node-0",
"ephemeral_id" : "hoXMLZB0RWKfR9UPPUCxXX",
"transport_address" : "127.0.0.1:9300",
"attributes" : {
"ml.machine_memory" : "17179869184",
"ml.max_open_jobs" : "512"
}
},
"assignment_explanation" : "",
"timing_stats" : {
"job_id" : "high_sum_total_sales",
"search_count" : 7,
"bucket_count" : 743,
"total_search_time_ms" : 134.0,
"average_search_time_per_bucket_ms" : 0.180349932705249,
"exponential_average_search_time_per_hour_ms" : 11.514712961628677
}
}
]
}
获取影响者 API
edit检索一个或多个影响者的异常检测作业结果。
请求
editGET _ml/anomaly_detectors/
先决条件
edit需要 monitor_ml 集群权限。此权限包含在 machine_learning_user 内置角色中。
描述
edit影响者是那些对异常情况有贡献或应负责的实体。只有在作业配置中指定了influencer_field_name时,才会提供影响者结果。
路径参数
edit-
<job_id> - (必需, 字符串) 异常检测作业的标识符。
查询参数
edit-
desc - (可选,布尔值) 如果为true,结果按降序排序。
-
end -
(可选,字符串) 返回时间戳早于此时间的 influencers。
默认为
-1,这意味着它未设置,结果不受特定时间戳的限制。 -
exclude_interim -
(可选, 布尔值)
如果为
true,输出将排除中间结果。默认为false,这意味着中间结果会被包含。 -
from -
(可选,整数)
跳过指定数量的影响者。默认为
0。 -
influencer_score -
(可选,双精度) 返回异常分数大于或等于此值的影响者。默认为
0.0。 -
size -
(可选, 整数)
指定要获取的最大影响者数量。默认为
100。 -
sort -
(可选,字符串) 指定请求的影响者的排序字段。默认情况下,影响者按
influencer_score值排序。 -
start -
(可选,字符串) 返回时间戳在此时间之后的 influencers。默认为
-1,这意味着未设置,结果不受特定时间戳的限制。
请求体
edit您也可以在请求体中指定查询参数;例外的是from和size,请使用page代替:
-
page -
page的属性-
from -
(可选, 整数) 跳过指定数量的影响者。默认为
0。 -
size -
(可选, 整数) 指定要获取的最大影响者数量。
默认为
100。
-
响应体
editAPI返回一个影响者对象数组,这些对象具有以下属性:
-
bucket_span -
(数字)
存储桶的长度,以秒为单位。该值与作业中指定的
bucket_span相匹配。 -
influencer_score -
(数字) 一个介于0-100之间的标准化分数,该分数基于检测器中影响者的概率聚合。与
initial_influencer_score不同,随着新数据的分析,此值将通过重新标准化过程进行更新。 -
influencer_field_name - (字符串) 影响者的字段名称。
-
influencer_field_value - (字符串) 对异常产生影响、贡献或应负责的实体。
-
initial_influencer_score - (数字) 一个介于0-100之间的标准化分数,基于检测器中聚合的影响者概率。这是在处理桶时计算的初始值。
-
is_interim -
(布尔值)
如果
true,这是一个中间结果。换句话说,结果是基于部分输入数据计算的。 -
job_id - (字符串) 异常检测作业的标识符。
-
probability -
(数字) 影响者具有此行为的概率,范围在0到1之间。例如,0.0000109783。此值可以保持超过300位小数的精度,因此提供了
influencer_score作为对此值的人类可读和友好的解释。 -
result_type -
(字符串) 内部使用。此值始终设置为
influencer。 -
timestamp - (日期) 计算这些结果的存储桶的开始时间。
根据分析的字段,会添加额外的影响者属性。例如,如果它正在分析 user_name 作为影响者,那么会在结果文档中添加一个 user_name 字段。这些信息使您能够更轻松地过滤异常结果。
示例
editGET _ml/anomaly_detectors/high_sum_total_sales/results/influencers
{
"sort": "influencer_score",
"desc": true
}
在这个例子中,API返回以下信息,根据影响力评分按降序排序:
{
"count": 189,
"influencers": [
{
"job_id": "high_sum_total_sales",
"result_type": "influencer",
"influencer_field_name": "customer_full_name.keyword",
"influencer_field_value": "Wagdi Shaw",
"customer_full_name.keyword" : "Wagdi Shaw",
"influencer_score": 99.02493,
"initial_influencer_score" : 94.67233079580171,
"probability" : 1.4784807245686567E-10,
"bucket_span" : 3600,
"is_interim" : false,
"timestamp" : 1574661600000
},
...
]
}
获取异常检测作业 API
edit检索异常检测作业的配置信息。
请求
editGET _ml/anomaly_detectors/
GET _ml/anomaly_detectors/
GET _ml/anomaly_detectors/
GET _ml/anomaly_detectors/_all
先决条件
edit需要 monitor_ml 集群权限。此权限包含在 machine_learning_user 内置角色中。
描述
edit此API最多返回10,000个职位。
路径参数
edit-
<job_id> -
(可选,字符串)
异常检测作业的标识符。它可以是作业标识符、组名或通配符表达式。您可以通过使用组名、逗号分隔的作业列表或通配符表达式,在单个API请求中获取多个异常检测作业的信息。您可以通过使用
_all,将作业标识符指定为*,或者省略标识符来获取所有异常检测作业的信息。
查询参数
edit-
allow_no_match -
(可选, 布尔值) 指定在请求时执行的操作:
- 包含通配符表达式且没有匹配的作业。
-
包含
_all字符串或没有标识符且没有匹配项。 - 包含通配符表达式且只有部分匹配。
默认值为
true,在没有匹配项时返回一个空的jobs数组,在有部分匹配项时返回部分结果。如果此参数为false,在没有匹配项或只有部分匹配项时,请求将返回404状态码。 -
exclude_generated - (可选,布尔值) 指示是否应在检索时从配置中移除某些字段。这允许配置以可接受的格式被检索,然后添加到另一个集群中。默认值为 false。
响应体
editAPI返回一个异常检测作业资源的数组。有关完整的属性列表,请参阅创建异常检测作业API。
-
blocked -
(对象) 当存在时,它解释了在作业上执行的任务会阻止其打开。
Properties of
blocked-
reason -
(字符串) 作业被阻止的原因。值可能是
delete、reset、revert。 每个值表示正在执行相应的操作。 -
task_id - (字符串) 阻止操作的任务ID。您可以使用 任务管理 API 来 监控进度。
-
-
create_time -
(字符串) 作业创建的时间。例如,
1491007356077。此属性是信息性的;您无法更改其值。 -
datafeed_config -
(对象) 为当前异常检测作业配置的数据馈送。
Properties of
datafeed_config-
authorization -
(可选, 对象) 数据馈送用于运行其查询的安全权限。如果在最近一次更新数据馈送时禁用了Elastic Stack安全功能,则省略此属性。
Properties of
authorization-
api_key -
(对象) 如果最近的更新数据源使用了API密钥,其名称和标识符将列在响应中。
Properties of
api_key-
id - (字符串) API密钥的标识符。
-
name - (字符串) API密钥的名称。
-
-
roles - (字符串数组) 如果最近一次更新数据馈送时使用了用户ID,则其更新时的角色将列在响应中。
-
service_account - (字符串) 如果最近一次更新数据馈送时使用了服务账户,则账户名称将列在响应中。
-
-
datafeed_id - (可选, 字符串) 一个唯一标识数据馈送的数字字符串。此标识符可以包含小写字母数字字符(a-z和0-9)、连字符和下划线。它必须以字母数字字符开头和结尾。
-
aggregations - (可选, 对象) 如果设置,数据馈送将执行聚合搜索。聚合的支持是有限的,应仅与低基数数据一起使用。有关更多信息,请参阅 聚合数据以加快性能。
-
chunking_config -
(可选, 对象) 数据馈送可能需要搜索长时间段,例如几个月或几年。为了确保Elasticsearch的负载得到管理,这种搜索被分割成时间块。块配置控制这些时间块的大小如何计算,这是一个高级配置选项。
Properties of
chunking_config-
mode -
(字符串) 有三种可用模式:
-
auto: 块大小是动态计算的。这是默认值,当数据馈送不使用聚合时推荐使用。 -
manual: 根据指定的time_span应用分块。当数据馈送使用聚合时使用此模式。 -
off: 不应用分块。
-
-
time_span -
(时间单位)
每个搜索将查询的时间跨度。此设置仅在模式设置为
manual时适用。例如:3h。
-
-
delayed_data_check_config -
(可选, 对象) 指定数据馈送是否检查缺失数据以及窗口的大小。例如:
{"enabled": true, "check_window": "1h"}。数据馈送可以选择性地搜索已经读取的索引,以确定是否有数据随后被添加到索引中。如果发现数据缺失,这表明
query_delay选项设置过低,数据在数据馈送通过该时间点后才被索引。请参阅处理延迟数据。此检查仅在实时数据馈送上运行。
Properties of
delayed_data_check_config-
check_window -
(时间单位)
搜索延迟数据的时间窗口。此窗口以最新的最终桶结束。它默认为
null,这会导致在实时数据馈送运行时计算适当的check_window。特别是,默认的check_window跨度计算基于2h或8 * bucket_span的最大值。 -
enabled -
(布尔值)
指定数据馈送是否定期检查延迟数据。默认为
true。
-
-
frequency -
(可选, 时间单位)
数据馈送在实时运行时计划查询的时间间隔。默认值是短桶跨度的桶跨度,或长桶跨度的桶跨度的一个合理分数。例如:
150s。当frequency短于桶跨度时,最后(部分)桶的临时结果会被写入,然后最终被完整桶的结果覆盖。如果数据馈送使用聚合,此值必须可被日期直方图聚合的间隔整除。 -
indices -
(必需,数组) 索引名称的数组。支持通配符。例如:
["it_ops_metrics", "server*"]。如果任何索引位于远程集群中,则机器学习节点需要具有
remote_cluster_client角色。 -
indices_options -
(可选, 对象) 指定在搜索期间使用的索引扩展选项。
例如:
{ "expand_wildcards": ["all"], "ignore_unavailable": true, "allow_no_indices": "false", "ignore_throttled": true }有关这些选项的更多信息,请参阅多目标语法。
-
job_id - (必需, 字符串) 异常检测作业的标识符。
-
max_empty_searches -
(可选, 整数)
如果实时数据馈送从未看到任何数据(包括在任何初始训练期间),则它将在返回无文档的实时搜索次数达到此值后自动停止并关闭其关联的作业。换句话说,它将在
frequency乘以max_empty_searches的实时操作后停止。如果未设置,则没有结束时间且未看到数据的数据馈送将保持启动状态,直到明确停止。默认情况下,此设置未设置。 -
query -
(可选, 对象)
Elasticsearch查询领域特定语言(DSL)。此值对应于Elasticsearch搜索POST正文中的查询对象。Elasticsearch支持的所有选项都可以使用,因为此对象被原样传递给Elasticsearch。默认情况下,此属性具有以下值:
{"match_all": {"boost": 1}}。 -
query_delay -
(可选, 时间单位)
查询数据落后于实时的时间秒数。例如,如果10:04的数据可能在10:06之前无法在Elasticsearch中搜索到,请将此属性设置为120秒。默认值在
60s和120s之间随机选择。这种随机性在同一节点上运行多个作业时提高了查询性能。有关更多信息,请参阅处理延迟数据。 -
runtime_mappings -
(可选, 对象) 指定数据馈送搜索的运行时字段。
例如:
{ "day_of_week": { "type": "keyword", "script": { "source": "emit(doc['@timestamp'].value.dayOfWeekEnum.getDisplayName(TextStyle.FULL, Locale.ENGLISH))" } } } -
script_fields - (可选, 对象) 指定评估自定义表达式并返回脚本字段到数据馈送的脚本。作业中的检测器配置对象可以包含使用这些脚本字段的功能。有关更多信息,请参阅使用脚本字段转换数据和脚本字段。
-
scroll_size -
(可选, 无符号整数)
当数据馈送不使用聚合时,在Elasticsearch搜索中使用的
size参数。默认值为1000。最大值为index.max_result_window的值,默认值为10,000。
-
-
finished_time -
(字符串) 如果作业关闭或失败,这是作业完成的时间,否则它是
null。此属性是信息性的;您无法更改其值。 -
job_type -
(字符串) 保留供将来使用,当前设置为
anomaly_detector。 -
job_version - (字符串) 创建作业时的机器学习配置版本号。
从 Elasticsearch 8.10.0 开始,使用一个新的版本号来跟踪机器学习插件中的配置和状态变化。这个新的版本号与产品版本解耦,并将独立递增。job_version 值表示新的版本号。
-
model_snapshot_id -
(字符串)
一个唯一标识模型快照的数值字符串。例如,
1575402236000。
响应代码
edit-
404(Missing resources) -
如果
allow_no_match是false,此代码表示没有与请求匹配的资源,或者只有部分匹配的请求。
示例
editGET _ml/anomaly_detectors/high_sum_total_sales
API返回以下结果:
{
"count": 1,
"jobs": [
{
"job_id" : "high_sum_total_sales",
"job_type" : "anomaly_detector",
"job_version" : "8.4.0",
"create_time" : 1655852735889,
"finished_time" : 1655852745980,
"model_snapshot_id" : "1575402237",
"custom_settings" : {
"created_by" : "ml-module-sample",
...
},
"datafeed_config" : {
"datafeed_id" : "datafeed-high_sum_total_sales",
"job_id" : "high_sum_total_sales",
"authorization" : {
"roles" : [
"superuser"
]
},
"query_delay" : "93169ms",
"chunking_config" : {
"mode" : "auto"
},
"indices_options" : {
"expand_wildcards" : [
"open"
],
"ignore_unavailable" : false,
"allow_no_indices" : true,
"ignore_throttled" : true
},
"query" : {
"bool" : {
"filter" : [
{
"term" : {
"event.dataset" : "sample_ecommerce"
}
}
]
}
},
"indices" : [
"kibana_sample_data_ecommerce"
],
"scroll_size" : 1000,
"delayed_data_check_config" : {
"enabled" : true
}
},
"groups" : [
"kibana_sample_data",
"kibana_sample_ecommerce"
],
"description" : "Find customers spending an unusually high amount in an hour",
"analysis_config" : {
"bucket_span" : "1h",
"detectors" : [
{
"detector_description" : "High total sales",
"function" : "high_sum",
"field_name" : "taxful_total_price",
"over_field_name" : "customer_full_name.keyword",
"detector_index" : 0
}
],
"influencers" : [
"customer_full_name.keyword",
"category.keyword"
],
"model_prune_window": "30d"
},
"analysis_limits" : {
"model_memory_limit" : "13mb",
"categorization_examples_limit" : 4
},
"data_description" : {
"time_field" : "order_date",
"time_format" : "epoch_ms"
},
"model_plot_config" : {
"enabled" : true,
"annotations_enabled" : true
},
"model_snapshot_retention_days" : 10,
"daily_model_snapshot_retention_after_days" : 1,
"results_index_name" : "shared",
"allow_lazy_open" : false
}
]
}
获取异常检测作业统计信息 API
edit检索异常检测作业的使用信息。
请求
editGET _ml/anomaly_detectors/
GET _ml/anomaly_detectors/
GET _ml/anomaly_detectors/_stats
GET _ml/anomaly_detectors/_all/_stats
先决条件
edit需要 monitor_ml 集群权限。此权限包含在 machine_learning_user 内置角色中。
描述
edit此API最多返回10,000个职位。
路径参数
edit-
<job_id> -
(可选,字符串)
异常检测作业的标识符。它可以是作业标识符、组名或通配符表达式。您可以通过使用组名、逗号分隔的作业列表或通配符表达式,在单个API请求中获取多个异常检测作业的统计信息。您可以通过使用
_all,将*指定为作业标识符,或省略标识符来获取所有异常检测作业的统计信息。
查询参数
edit-
allow_no_match -
(可选, 布尔值) 指定在请求时执行的操作:
- 包含通配符表达式且没有匹配的作业。
-
包含
_all字符串或没有标识符且没有匹配项。 - 包含通配符表达式且只有部分匹配。
默认值为
true,在没有匹配项时返回一个空的jobs数组,在有部分匹配项时返回部分结果。如果此参数为false,在没有匹配项或只有部分匹配项时,请求将返回404状态码。
响应体
editAPI返回有关作业操作进度的以下信息:
-
assignment_explanation - (字符串) 仅对于开放的异常检测作业,包含与选择运行作业的节点相关的消息。
-
data_counts -
(对象) 一个描述作业输入数量及任何相关错误计数的对象。
data_count值是作业生命周期内的累积值。如果模型快照被还原或旧结果被删除,作业计数不会重置。Properties of
data_counts-
bucket_count - (长整型) 作业生成的桶结果数量。
-
earliest_record_timestamp - (日期) 最早输入文档的时间戳。
-
empty_bucket_count -
(长整型)
不包含任何数据的桶数量。如果您的数据包含许多空桶,请考虑增加您的
bucket_span或使用对数据间隙容忍的函数,如mean、non_null_sum或non_zero_count。 -
input_bytes - (长整型) 发布到异常检测作业的输入数据的字节数。
-
input_field_count - (长整型) 发布到异常检测作业的输入文档中的字段总数。此计数包括未在分析中使用的字段。但是,请注意,如果您使用数据馈送,它仅从检索到的文档中提取所需字段,然后将其发布到作业中。
-
input_record_count - (长整型) 发布到异常检测作业的输入文档数量。
-
invalid_date_count - (长整型) 缺少日期字段或日期无法解析的输入文档数量。
-
job_id - (字符串) 异常检测作业的标识符。
-
last_data_time - (日期) 根据服务器时间,数据最后一次被分析的时间戳。
-
latest_empty_bucket_timestamp - (日期) 不包含任何数据的最后一个桶的时间戳。
-
latest_record_timestamp - (日期) 最新输入文档的时间戳。
-
latest_sparse_bucket_timestamp - (日期) 被认为是稀疏的最后一个桶的时间戳。
-
log_time -
(日期)
data_counts的时间戳,根据服务器时间。 -
missing_field_count -
(长整型) 配置为分析异常检测作业的输入文档中缺少的字段数量。具有缺失字段的输入文档仍然会被处理,因为可能并非所有字段都缺失。
如果您正在使用数据馈送或将数据以JSON格式发布到作业中,高
missing_field_count通常并不表示数据存在问题。这并不一定是一个需要关注的原因。processed_record_count的值包括此计数。 -
out_of_order_timestamp_count - (长整型) 时间戳在当前异常检测桶的延迟窗口偏移之前的时间戳的输入文档数量。此信息仅在您使用 post data API 向异常检测作业提供数据时适用。这些无序文档被丢弃,因为作业要求时间序列数据按时间顺序升序排列。
-
processed_field_count - 异常检测作业处理的所有文档中的字段总数。仅在检测器配置对象中指定的字段对此计数有贡献。时间戳不包括在此计数中。
-
processed_record_count -
(长整型)
异常检测作业处理的输入文档数量。此值包括具有缺失字段的文档,因为它们仍然被分析。如果您使用数据馈送并且在搜索查询中有聚合,
processed_record_count是处理的聚合结果数量,而不是Elasticsearch文档数量。 -
sparse_bucket_count -
(长整型)
与预期数据点数量相比,包含较少数据点的桶数量。如果您的数据包含许多稀疏桶,请考虑使用更长的
bucket_span。
-
-
deleting -
(布尔值)
表示删除作业的过程正在进行中,但尚未完成。仅当
true时才会报告。
-
forecasts_stats -
(对象) 提供关于属于此作业的预测的统计信息的对象。如果没有进行预测,则省略某些统计信息。
除非至少有一个预测,否则将省略
memory_bytes、records、processing_time_ms和status属性。Properties of
forecasts_stats-
forecasted_jobs -
(long) 值为
0表示此作业不存在预测。值为1表示至少存在一个预测。 -
memory_bytes -
(对象) 与此作业相关的预测的内存使用量的
avg、min、max和total值(以字节为单位)。如果没有预测,则省略此属性。 -
records -
(对象) 与此作业相关的预测写入的
model_forecast文档数量的avg、min、max和total值。如果没有预测,则省略此属性。 -
processing_time_ms -
(对象) 与此作业相关的预测的运行时间的
avg、min、max和total值(以毫秒为单位)。如果没有预测,则省略此属性。 -
status - (对象) 按状态统计的预测数量。例如:{"finished" : 2, "started" : 1}。如果没有预测,则省略此属性。
-
total -
(long)
当前可用于该作业的单个预测的数量。值为
1或更多表示存在预测。
-
-
job_id - (字符串) 异常检测作业的标识符。
-
model_size_stats -
(对象) 一个提供有关模型大小和内容信息的对象。
Properties of
model_size_stats-
assignment_memory_basis -
(字符串) 指示用于决定作业运行位置的内存需求的位置。可能的值有:
-
model_memory_limit: 作业的内存需求是基于其模型内存将增长到配置中的model_memory_limit来计算的。 -
current_model_bytes: 作业的内存需求是基于其当前模型内存大小来计算的,认为当前大小能很好地反映未来的情况。 -
peak_model_bytes: 作业的内存需求是基于其峰值模型内存大小来计算的,认为峰值大小能很好地反映未来的模型大小。
-
-
bucket_allocation_failures_count -
(长整型)
由于模型内存不足而未处理传入数据中新实体的桶的数量。这种情况也通过
hard_limit: memory_status属性值表示。 -
categorized_doc_count - (长整型) 已被分类字段分类的文档数量。
-
categorization_status -
(字符串) 作业分类的状态。包含以下值之一:
-
ok: 分类表现良好(或根本未使用)。 -
warn: 分类检测到的类别分布表明输入数据不适合分类。问题可能是只有一个类别,超过90%的类别是稀有的,类别的数量大于已分类文档数量的50%,没有频繁匹配的类别,或者超过50%的类别是无效的。
-
-
dead_category_count - (长整型) 分类创建的永远不会再被分配的类别的数量,因为另一个类别的定义使其成为无效类别的超集。(无效类别是分类没有先验训练的副作用。)
-
failed_category_count -
(长整型)
分类想要创建新类别但因作业达到其
model_memory_limit而无法创建的次数。此计数不跟踪哪些特定类别未能创建。因此,您不能使用此值来确定错过的唯一类别数量。 -
frequent_category_count - (长整型) 匹配超过1%已分类文档的类别的数量。
-
job_id - (字符串) 异常检测作业的标识符。
-
log_time -
(日期) 根据服务器时间,
model_size_stats的时间戳。 -
memory_status -
(字符串) 数学模型的状态,可以具有以下值之一:
-
ok: 模型保持在配置值以下。 -
soft_limit: 模型使用了超过60%的配置内存限制,并且将修剪旧的未使用的模型以释放空间。此外,在分类作业中,不会存储更多的类别示例。 -
hard_limit: 模型使用的空间超过了配置的内存限制。因此,并非所有传入数据都被处理。
-
-
model_bytes - (长整型) 模型使用的内存字节数。这是自上次模型持久化以来的最大值。如果作业关闭,此值表示最新的大小。
-
model_bytes_exceeded - (长整型) 上次分配失败时内存使用量超过高限制的字节数。
-
model_bytes_memory_limit - (长整型) 模型内存使用量的上限,在增加值时检查。
-
peak_model_bytes - (长整型) 模型曾经使用的内存字节数的峰值。
-
rare_category_count - (长整型) 仅匹配一个已分类文档的类别的数量。
-
result_type - (字符串) 内部使用。结果的类型。
-
total_by_field_count -
(长整型)
模型分析的
by字段值的数量。此值是作业中所有检测器的累积值。 -
total_category_count - (长整型) 分类创建的类别的数量。
-
total_over_field_count -
(长整型)
模型分析的
over字段值的数量。此值是作业中所有检测器的累积值。 -
total_partition_field_count -
(长整型)
模型分析的
partition字段值的数量。此值是作业中所有检测器的累积值。 -
timestamp - (日期) 模型统计信息收集时的最后一条记录的时间戳。
-
-
node -
(对象) 包含运行作业节点的属性。此信息仅对打开的作业可用。
Properties of
node-
attributes -
(对象)
列出节点属性,例如
ml.machine_memory或ml.max_open_jobs设置。 -
ephemeral_id - (字符串) 节点的临时ID。
-
id - (字符串) 节点的唯一标识符。
-
name - (字符串) 节点名称。
-
transport_address - (字符串) 接受传输HTTP连接的主机和端口。
-
-
open_time - (字符串) 仅针对开放职位,职位开放以来的已过时间。
-
state -
(字符串) 异常检测作业的状态,可以是以下值之一:
-
closed: 作业成功完成,其模型状态已持久化。作业必须先打开才能接受进一步的数据。 -
closing: 作业关闭操作正在进行中,尚未完成。关闭的作业无法接受进一步的数据。 -
failed: 作业由于错误未能成功完成。这种情况可能由于无效的输入数据、分析过程中发生的致命错误或外部交互(如进程被Linux内存不足(OOM)杀手终止)引起。如果作业已不可逆转地失败,必须强制关闭然后删除。如果数据馈送可以修正,作业可以关闭然后重新打开。 -
opened: 作业可以接收和处理数据。 -
opening: 作业打开操作正在进行中,尚未完成。
-
-
timing_stats -
(对象) 提供关于此作业时间方面的统计信息的对象。
Properties of
timing_stats-
average_bucket_processing_time_ms - (double) 所有桶处理时间的平均值,单位为毫秒。
-
bucket_count - (long) 处理的桶的数量。
-
exponential_average_bucket_processing_time_ms - (double) 所有桶处理时间的指数移动平均值,单位为毫秒。
-
exponential_average_bucket_processing_time_per_hour_ms - (double) 在1小时时间窗口内计算的桶处理时间的指数加权移动平均值,单位为毫秒。
-
job_id - (string) 异常检测作业的标识符。
-
maximum_bucket_processing_time_ms - (double) 所有桶处理时间中的最大值,单位为毫秒。
-
minimum_bucket_processing_time_ms - (double) 所有桶处理时间中的最小值,单位为毫秒。
-
total_bucket_processing_time_ms - (double) 所有桶处理时间的总和,单位为毫秒。
-
响应代码
edit-
404(Missing resources) -
如果
allow_no_match是false,此代码表示没有与请求匹配的资源,或者只有部分匹配的请求。
示例
editGET _ml/anomaly_detectors/low_request_rate/_stats
API返回以下结果:
{
"count" : 1,
"jobs" : [
{
"job_id" : "low_request_rate",
"data_counts" : {
"job_id" : "low_request_rate",
"processed_record_count" : 1216,
"processed_field_count" : 1216,
"input_bytes" : 51678,
"input_field_count" : 1216,
"invalid_date_count" : 0,
"missing_field_count" : 0,
"out_of_order_timestamp_count" : 0,
"empty_bucket_count" : 242,
"sparse_bucket_count" : 0,
"bucket_count" : 1457,
"earliest_record_timestamp" : 1575172659612,
"latest_record_timestamp" : 1580417369440,
"last_data_time" : 1576017595046,
"latest_empty_bucket_timestamp" : 1580356800000,
"input_record_count" : 1216
},
"model_size_stats" : {
"job_id" : "low_request_rate",
"result_type" : "model_size_stats",
"model_bytes" : 41480,
"model_bytes_exceeded" : 0,
"model_bytes_memory_limit" : 10485760,
"total_by_field_count" : 3,
"total_over_field_count" : 0,
"total_partition_field_count" : 2,
"bucket_allocation_failures_count" : 0,
"memory_status" : "ok",
"categorized_doc_count" : 0,
"total_category_count" : 0,
"frequent_category_count" : 0,
"rare_category_count" : 0,
"dead_category_count" : 0,
"failed_category_count" : 0,
"categorization_status" : "ok",
"log_time" : 1576017596000,
"timestamp" : 1580410800000
},
"forecasts_stats" : {
"total" : 1,
"forecasted_jobs" : 1,
"memory_bytes" : {
"total" : 9179.0,
"min" : 9179.0,
"avg" : 9179.0,
"max" : 9179.0
},
"records" : {
"total" : 168.0,
"min" : 168.0,
"avg" : 168.0,
"max" : 168.0
},
"processing_time_ms" : {
"total" : 40.0,
"min" : 40.0,
"avg" : 40.0,
"max" : 40.0
},
"status" : {
"finished" : 1
}
},
"state" : "opened",
"node" : {
"id" : "7bmMXyWCRs-TuPfGJJ_yMw",
"name" : "node-0",
"ephemeral_id" : "hoXMLZB0RWKfR9UPPUCxXX",
"transport_address" : "127.0.0.1:9300",
"attributes" : {
"ml.machine_memory" : "17179869184",
"xpack.installed" : "true",
"ml.max_open_jobs" : "512"
}
},
"assignment_explanation" : "",
"open_time" : "13s",
"timing_stats" : {
"job_id" : "low_request_rate",
"bucket_count" : 1457,
"total_bucket_processing_time_ms" : 1094.000000000001,
"minimum_bucket_processing_time_ms" : 0.0,
"maximum_bucket_processing_time_ms" : 48.0,
"average_bucket_processing_time_ms" : 0.75085792724777,
"exponential_average_bucket_processing_time_ms" : 0.5571716855800993,
"exponential_average_bucket_processing_time_per_hour_ms" : 15.0
}
}
]
}
获取模型快照 API
edit检索有关模型快照的信息。
先决条件
edit需要 monitor_ml 集群权限。此权限包含在 machine_learning_user 内置角色中。
路径参数
edit-
<job_id> - (必需, 字符串) 异常检测作业的标识符。
-
<snapshot_id> -
(可选, 字符串) 模型快照的标识符。
您可以通过使用逗号分隔的列表或通配符表达式来获取多个快照的信息。您可以通过使用
_all,将快照 ID 指定为*,或者省略快照 ID 来获取所有快照。
查询参数
edit-
desc -
(可选, 布尔值) 如果为 true,结果按降序排序。
默认为
false。 -
end - (可选,日期) 返回时间戳早于该时间的快照。 默认为未设置,这意味着结果不受特定时间戳的限制。
-
from -
(可选,整数) 跳过指定数量的快照。默认为
0。 -
size -
(可选,整数) 指定要获取的最大快照数量。
默认为
100。 -
sort - (可选,字符串) 指定请求快照的排序字段。默认情况下,快照按其时间戳排序。
-
start - (可选,字符串) 返回时间戳在此时间之后的快照。默认为未设置,这意味着结果不受特定时间戳的限制。
请求体
edit您也可以在请求体中指定查询参数;例外的是from和size,请使用page代替:
-
page -
page的属性-
from -
(可选, 整数) 跳过指定数量的快照。默认为
0。 -
size -
(可选, 整数) 指定要获取的最大快照数量。
默认为
100。
-
响应体
editAPI返回一个模型快照对象数组,这些对象具有以下属性:
-
description - (字符串) 作业的可选描述。
-
job_id - (字符串) 一个唯一标识为快照创建的任务的数值字符串。
-
latest_record_time_stamp - (日期) 最新处理记录的时间戳。
-
latest_result_time_stamp - (日期) 最新存储桶结果的时间戳。
-
min_version - (字符串) 恢复模型快照所需的最小机器学习配置版本号。
从 Elasticsearch 8.10.0 开始,使用了一个新的版本号来跟踪机器学习插件中的配置和状态变化。这个新的版本号与产品版本解耦,并将独立递增。min_version 值代表新的版本号。
-
model_size_stats -
(对象) 描述模型的摘要信息。
Properties of
model_size_stats-
assignment_memory_basis -
(字符串) 指示用于决定作业运行位置的内存需求的位置。可能的值有:
-
model_memory_limit: The job’s memory requirement is calculated on the basis that its model memory will grow to themodel_memory_limitspecified in theanalysis_limitsof its config. -
current_model_bytes: The job’s memory requirement is calculated on the basis that its current model memory size is a good reflection of what it will be in the future. -
peak_model_bytes: The job’s memory requirement is calculated on the basis that its peak model memory size is a good reflection of what the model size will be in the future.
-
-
bucket_allocation_failures_count - (长整型) 由于内存限制约束而未处理实体的桶的数量。
-
categorized_doc_count - (长整型) 已对字段进行分类的文档数量。
-
categorization_status -
(字符串) 该作业的分类状态。 包含以下值之一。
-
ok: Categorization is performing acceptably well (or not being used at all). -
warn: Categorization is detecting a distribution of categories that suggests the input data is inappropriate for categorization. Problems could be that there is only one category, more than 90% of categories are rare, the number of categories is greater than 50% of the number of categorized documents, there are no frequently matched categories, or more than 50% of categories are dead.
-
-
dead_category_count - (长整型) 分类创建的永远不会再分配的类别数量,因为另一个类别的定义使其成为死类别的超集。(死类别是分类没有先前训练的副作用。)
-
failed_category_count -
(长整型)
分类想要创建新类别但因作业达到其
model_memory_limit而无法创建的次数。此计数不跟踪哪些特定类别未能创建。因此,您无法使用此值来确定错过的唯一类别数量。 -
frequent_category_count - (长整型) 匹配超过1%的已分类文档的类别数量。
-
job_id - (字符串) 异常检测作业的标识符。
-
log_time -
(日期) 根据服务器时间记录
model_size_stats的时间戳。 -
memory_status -
(字符串) 内存状态与其
model_memory_limit的关系。 包含以下值之一。-
hard_limit: The internal models require more space than the configured memory limit. Some incoming data could not be processed. -
ok: The internal models stayed below the configured value. -
soft_limit: The internal models require more than 60% of the configured memory limit and more aggressive pruning will be performed in order to try to reclaim space.
-
-
model_bytes - (长整型) 此分析所需的内存资源的近似值。
-
model_bytes_exceeded - (长整型) 上次分配失败时内存使用量超过高限制的字节数。
-
model_bytes_memory_limit - (长整型) 内存使用量的上限,在增加值时进行检查。
-
peak_model_bytes - (长整型) 模型内存使用的最高记录值。
-
rare_category_count - (长整型) 仅匹配一个已分类文档的类别数量。
-
result_type -
(字符串) 内部。此值始终为
model_size_stats。 -
timestamp -
(日期) 根据数据的桶时间戳记录
model_size_stats的时间戳。 -
total_by_field_count - (长整型) 分析的by字段值的数量。请注意,这些值是针对每个检测器和分区单独计数的。
-
total_category_count - (长整型) 分类创建的类别数量。
-
total_over_field_count - (长整型) 分析的over字段值的数量。请注意,这些值是针对每个检测器和分区单独计数的。
-
total_partition_field_count - (长整型) 分析的partition字段值的数量。
-
-
retain -
(布尔值)
如果为
true,此快照在超过model_snapshot_retention_days的自动清理过程中不会被删除。然而,当作业被删除时,此快照将被删除。默认值为false。 -
snapshot_id - (字符串) 一个唯一标识模型快照的数值字符串。例如:"1491852978"。
-
snapshot_doc_count - (长整型) 仅限内部使用。
-
timestamp - (日期) 快照的创建时间戳。
示例
editGET _ml/anomaly_detectors/high_sum_total_sales/model_snapshots
{
"start": "1575402236000"
}
在这个例子中,API提供了一个单一的结果:
{
"count" : 1,
"model_snapshots" : [
{
"job_id" : "high_sum_total_sales",
"min_version" : "6.4.0",
"timestamp" : 1575402237000,
"description" : "State persisted due to job close at 2019-12-03T19:43:57+0000",
"snapshot_id" : "1575402237",
"snapshot_doc_count" : 1,
"model_size_stats" : {
"job_id" : "high_sum_total_sales",
"result_type" : "model_size_stats",
"model_bytes" : 1638816,
"model_bytes_exceeded" : 0,
"model_bytes_memory_limit" : 10485760,
"total_by_field_count" : 3,
"total_over_field_count" : 3320,
"total_partition_field_count" : 2,
"bucket_allocation_failures_count" : 0,
"memory_status" : "ok",
"categorized_doc_count" : 0,
"total_category_count" : 0,
"frequent_category_count" : 0,
"rare_category_count" : 0,
"dead_category_count" : 0,
"categorization_status" : "ok",
"log_time" : 1575402237000,
"timestamp" : 1576965600000
},
"latest_record_time_stamp" : 1576971072000,
"latest_result_time_stamp" : 1576965600000,
"retain" : false
}
]
}
获取异常检测作业模型快照升级统计信息 API
edit检索异常检测作业模型快照升级的使用信息。
请求
editGET _ml/anomaly_detectors/
GET _ml/anomaly_detectors/
GET _ml/anomaly_detectors/_all/model_snapshots/_all/_upgrade/_stats
先决条件
edit需要 monitor_ml 集群权限。此权限包含在 machine_learning_user 内置角色中。
描述
edit异常检测作业模型快照升级是临时的。只有在此API被调用时正在进行中的升级才会被返回。
路径参数
edit-
<job_id> - (字符串) 异常检测作业的标识符。它可以是作业标识符、组名或通配符表达式。
-
<snapshot_id> -
(字符串) 模型快照的标识符。
您可以通过使用逗号分隔的快照ID列表,在单个API请求中获取多个异常检测作业模型快照升级的统计信息。您还可以使用通配符表达式或
_all。
查询参数
edit-
allow_no_match -
(可选, 布尔值) 指定在请求时执行的操作:
- 包含通配符表达式且没有匹配的作业。
-
包含
_all字符串或没有标识符且没有匹配项。 - 包含通配符表达式且只有部分匹配。
默认值为
true,在没有匹配项时返回一个空的jobs数组,在有部分匹配项时返回部分结果。如果此参数为false,在没有匹配项或只有部分匹配项时,请求将返回404状态码。
响应体
editAPI返回一个异常检测作业模型快照升级状态对象的数组。 所有这些属性都是信息性的;您不能更新它们的值。
-
assignment_explanation - (字符串) 仅对于已启动的数据馈送,包含与节点选择相关的消息。
-
job_id - (字符串) 异常检测作业的标识符。
-
node -
(对象) 包含运行升级任务的节点的属性。此信息仅适用于分配给节点的升级任务。
详情
-
attributes -
(对象)
列出节点的属性,例如
ml.machine_memory或ml.max_open_jobs设置。 -
ephemeral_id - (字符串) 节点的临时ID。
-
id - (字符串) 节点的唯一标识符。
-
name -
(字符串)
节点名称。例如,
0-o0tOo。 -
transport_address - (字符串) 接受传输HTTP连接的主机和端口。
-
-
snapshot_id -
(字符串)
一个唯一标识模型快照的数值字符串。例如,
1575402236000。 -
state -
(字符串)
其中之一为
loading_old_state、saving_new_state、stopped或failed。
响应代码
edit-
404(Missing resources) -
如果
allow_no_match是false,此代码表示没有与请求匹配的资源,或者只有部分匹配的请求。
示例
editGET _ml/anomaly_detectors/low_request_rate/model_snapshots/_all/_upgrade/_stats
API返回以下结果:
{
"count" : 1,
"model_snapshot_upgrades" : [
{
"job_id" : "low_request_rate",
"snapshot_id" : "1828371",
"state" : "saving_new_state",
"node" : {
"id" : "7bmMXyWCRs-TuPfGJJ_yMw",
"name" : "node-0",
"ephemeral_id" : "hoXMLZB0RWKfR9UPPUCxXX",
"transport_address" : "127.0.0.1:9300",
"attributes" : {
"ml.machine_memory" : "17179869184",
"ml.max_open_jobs" : "512"
}
},
"assignment_explanation" : ""
}
]
}
获取总体桶 API
edit检索汇总多个异常检测作业的存储桶结果的总体存储桶结果。
请求
editGET _ml/anomaly_detectors/
GET _ml/anomaly_detectors/
GET _ml/anomaly_detectors/_all/results/overall_buckets
先决条件
edit需要 monitor_ml 集群权限。此权限包含在 machine_learning_user 内置角色中。
描述
edit默认情况下,总体桶的跨度等于指定异常检测作业中最大桶跨度。要覆盖此行为,请使用可选的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。
路径参数
edit-
<job_id> -
(必需, 字符串) 异常检测作业的标识符。它可以是作业标识符、组名称、逗号分隔的作业或组列表,或通配符表达式。
您可以通过使用
_all或指定*作为作业标识符来汇总所有异常检测作业的存储桶结果。
查询参数
edit-
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。
请求体
edit您还可以在请求体中指定查询参数(例如 allow_no_match 和
bucket_span)。
响应体
editAPI返回一个整体存储桶对象的数组,这些对象具有以下属性:
-
bucket_span -
(数字) 桶的长度,以秒为单位。匹配具有最长桶跨度的作业的
bucket_span。 -
is_interim -
(布尔值)
如果
true,这是一个中间结果。换句话说,结果是基于部分输入数据计算的。 -
jobs -
(数组) 包含每个
job_id的max_anomaly_score的对象数组。 -
overall_score -
(数字) 每个作业的最大桶
anomaly_score的top_n平均值。 -
result_type -
(字符串) 内部使用。这总是设置为
overall_bucket。 -
timestamp - (日期) 计算这些结果的存储桶的开始时间。
示例
editGET _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:
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"
}
]
}
获取预定事件 API
edit检索日历中预定事件的信息。
前提条件
edit需要 monitor_ml 集群权限。此权限包含在 machine_learning_user 内置角色中。
路径参数
edit-
<calendar_id> -
(必需, 字符串) 一个唯一标识日历的字符串。
您可以通过使用逗号分隔的id列表或通配符表达式,在单个API请求中获取多个日历的预定事件信息。您可以使用
_all或*作为日历标识符来获取所有日历的预定事件信息。
查询参数
edit-
end - (可选,字符串) 指定获取时间戳早于该时间的事件。
-
from -
(可选,整数) 跳过指定数量的事件。默认为
0。 -
job_id -
(可选,字符串) 指定获取特定异常检测作业标识符或作业组的事件。它必须与日历标识符
_all或*一起使用。 -
size -
(可选, 整数) 指定要获取的最大事件数量。默认为
100。 -
start - (可选,字符串) 指定获取时间戳在此时间之后的事件。
请求体
edit您也可以在请求体中指定查询参数;例外的是from和size,请使用page代替:
-
page -
属性
page-
from -
(可选, 整数) 跳过指定数量的事件。默认为
0。 -
size -
(可选, 整数) 指定要获取的最大事件数量。默认为
100。
-
响应体
editAPI返回一个预定事件资源的数组,这些资源具有以下属性:
-
calendar_id - (字符串) 一个唯一标识日历的字符串。
-
description - (字符串) 计划事件的描述。
-
end_time - (日期) 计划事件结束时间的时间戳,自纪元以来的毫秒数或ISO 8601格式。
-
event_id - (字符串) 计划事件的自动生成标识符。
-
start_time - (日期) 计划事件开始的时间戳,以自纪元以来的毫秒数或ISO 8601格式表示。
示例
editGET _ml/calendars/planned-outages/events
API返回以下结果:
{
"count": 3,
"events": [
{
"description": "event 1",
"start_time": 1513641600000,
"end_time": 1513728000000,
"calendar_id": "planned-outages",
"event_id": "LS8LJGEBMTCMA-qz49st"
},
{
"description": "event 2",
"start_time": 1513814400000,
"end_time": 1513900800000,
"calendar_id": "planned-outages",
"event_id": "Li8LJGEBMTCMA-qz49st"
},
{
"description": "event 3",
"start_time": 1514160000000,
"end_time": 1514246400000,
"calendar_id": "planned-outages",
"event_id": "Ly8LJGEBMTCMA-qz49st"
}
]
}
以下示例检索在特定时间段内发生的预定事件:
GET _ml/calendars/planned-outages/events?start=1635638400000&end=1635724800000
获取过滤器 API
edit检索过滤器。
先决条件
edit需要 manage_ml 集群权限。此权限包含在 machine_learning_admin 内置角色中。
路径参数
edit-
<filter_id> - (可选, 字符串) 一个唯一标识过滤器的字符串。
查询参数
edit-
from -
(可选,整数) 跳过指定数量的过滤器。默认为
0。 -
size -
(可选,整数) 指定要获取的最大过滤器数量。
默认为
100。
响应体
editAPI返回一个过滤器资源的数组,这些资源具有以下属性:
-
description - (字符串) 过滤器的描述。
-
filter_id - (字符串) 一个唯一标识过滤器的字符串。
-
items - (字符串数组) 一个字符串数组,表示过滤项列表。
示例
editGET _ml/filters/safe_domains
API返回以下结果:
{
"count": 1,
"filters": [
{
"filter_id": "safe_domains",
"description": "A list of safe domains",
"items": [
"*.google.com",
"wikipedia.org"
]
}
]
}
获取记录 API
edit检索异常检测任务的异常记录。
请求
editGET _ml/anomaly_detectors/
先决条件
edit需要 monitor_ml 集群权限。此权限包含在 machine_learning_user 内置角色中。
描述
edit记录包含详细的分析结果。它们描述了根据检测器配置在输入数据中识别出的异常活动。
根据输入数据的特性和大小,可能会有许多异常记录。在实际操作中,通常会有太多而无法手动处理。因此,机器学习功能会对异常记录进行复杂的聚合,将其分组到不同的桶中。
记录结果的数量取决于每个桶中发现的异常数量,这与正在建模的时间序列数量和检测器的数量有关。
路径参数
edit-
<job_id> - (必需, 字符串) 异常检测作业的标识符。
查询参数
edit-
desc - (可选,布尔值) 如果为true,结果按降序排序。
-
end -
(可选,字符串) 返回时间戳早于此时间的记录。
默认为
-1,这意味着它未设置,结果不受限于特定的时间戳。 -
exclude_interim -
(可选, 布尔值)
如果为
true,输出将排除中间结果。默认为false,这意味着中间结果会被包含。 -
from -
(可选, 整数) 跳过指定数量的记录。默认为
0。 -
record_score -
(可选,双精度) 返回异常分数大于或等于此值的记录。默认为
0.0。 -
size -
(可选, 整数) 指定要获取的最大记录数。默认为
100。 -
sort -
(可选,字符串) 指定请求记录的排序字段。默认情况下,记录按
record_score值排序。 -
start -
(可选,字符串) 返回时间戳在此时间之后的记录。默认为
-1,这意味着它未设置,结果不受特定时间戳的限制。
请求体
edit您也可以在请求体中指定查询参数;例外的是from和size,请使用page代替:
-
page -
属性
page-
from -
(可选, 整数) 跳过指定数量的记录。默认为
0。 -
size -
(可选, 整数) 指定要获取的最大记录数。默认为
100。
-
响应体
editAPI返回一个记录对象数组,这些对象具有以下属性:
-
actual - (数组) 桶的实际值。
-
anomaly_score_explanation -
(对象) 当存在时,它提供了影响初始异常分数的因素的信息。
Properties of
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字段记录中。 原因资源包含与记录资源类似的元素,即actual、typical、geo_results.actual_point、geo_results.typical_point、*_field_name和*_field_value。概率和分数不适用于原因。 -
detector_index - (数字) 检测器的唯一标识符。
-
field_name -
(字符串) 某些函数需要一个字段来进行操作,例如,
sum()。 对于这些函数,此值是要分析的字段的名称。 -
function -
(字符串) 在检测器配置中指定的发生异常的函数。例如,
max。 -
function_description - (字符串) 异常发生时所在函数的描述,如检测器配置中所指定。
-
geo_results -
(可选, 对象) 如果检测器函数是
lat_long,此对象包含实际值和典型值的纬度和经度的逗号分隔字符串。Properties of
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 分析为 by 字段,那么会在结果文档中添加一个 hostname 字段。这些信息使您能够更轻松地过滤异常结果。
示例
editGET _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
]
},
...
]
}
打开异常检测作业 API
edit打开一个或多个异常检测作业。
请求
editPOST _ml/anomaly_detectors/{job_id}/_open
先决条件
edit需要 manage_ml 集群权限。此权限包含在 machine_learning_admin 内置角色中。
描述
edit为了能够接收和分析数据,必须打开异常检测作业。在其生命周期中,它可以被多次打开和关闭。
当你打开一个新任务时,它会从一个空模型开始。
当您打开一个现有的作业时,最新的模型状态会自动加载。一旦收到新数据,作业就可以从上次中断的地方继续进行分析。
路径参数
edit-
<job_id> - (必需, 字符串) 异常检测作业的标识符。
查询参数
edit-
timeout - (可选,时间) 控制等待作业打开的时间。默认值是30分钟。
请求体
edit您还可以在请求体中指定timeout查询参数。
响应体
edit-
node - (字符串) 作业被打开的节点的ID。如果允许作业延迟打开且尚未分配给节点,则此值为空字符串。
-
opened -
(布尔值) 对于成功的响应,此值始终为
true。在失败的情况下,将返回异常。
示例
editPOST _ml/anomaly_detectors/low_request_rate/_open
{
"timeout": "35m"
}
当作业打开时,您会收到以下结果:
{
"opened" : true,
"node" : "node-1"
}
向作业API发送数据
edit在7.11.0中已弃用。
直接向异常检测作业发布数据已被弃用,在未来的主要版本中,将需要一个数据流。
将数据发送到异常检测作业进行分析。
请求
editPOST _ml/anomaly_detectors/
先决条件
edit需要 manage_ml 集群权限。此权限包含在 machine_learning_admin 内置角色中。
描述
edit作业必须处于打开状态才能接收和处理数据。
发送到作业的数据必须使用 JSON 格式。可以发送多个 JSON 文档,它们可以是相邻的,中间没有分隔符,或者是用空白分隔的。换行符分隔的 JSON(NDJSON)是一种可能的空白分隔格式,对于这种格式,Content-Type 头应设置为 application/x-ndjson。
上传大小限制为 Elasticsearch HTTP 接收缓冲区大小(默认 100 Mb)。如果您的数据较大,请将其拆分为多个块,并按时间顺序分别上传每个块。在实时运行时,通常建议您执行多次小规模上传,而不是将数据排队以上传较大的文件。
上传数据时,检查作业数据计数以了解进度。 以下文档将不会被处理:
- 文档未按时间顺序排列且超出延迟窗口
- 带有无效时间戳的记录
对于每个任务,数据一次只能从一个连接接收。目前不支持使用通配符或逗号分隔列表向多个任务发送数据。
路径参数
edit-
<job_id> - (必需, 字符串) 异常检测作业的标识符。
查询参数
edit-
reset_start - (可选,字符串) 指定桶重置范围的开始。
-
reset_end - (可选,字符串) 指定桶重置范围的结束。
请求体
edit包含要分析数据的一个或多个JSON文档序列。 仅允许在文档之间使用空白字符。
示例
edit以下示例将数据从 it_ops_new_kpi.json 文件发布到 it_ops_new_kpi 作业:
$ curl -s -H "Content-type: application/json" -X POST http:\/\/localhost:9200/_ml/anomaly_detectors/it_ops_new_kpi/_data --data-binary @it_ops_new_kpi.json
当数据发送时,您会收到有关作业操作进度的信息。例如:
{
"job_id":"it_ops_new_kpi",
"processed_record_count":21435,
"processed_field_count":64305,
"input_bytes":2589063,
"input_field_count":85740,
"invalid_date_count":0,
"missing_field_count":0,
"out_of_order_timestamp_count":0,
"empty_bucket_count":16,
"sparse_bucket_count":0,
"bucket_count":2165,
"earliest_record_timestamp":1454020569000,
"latest_record_timestamp":1455318669000,
"last_data_time":1491952300658,
"latest_empty_bucket_timestamp":1454541600000,
"input_record_count":21435
}
有关这些属性的更多信息,请参阅响应体。
预览数据馈送 API
edit预览数据源。
请求
editGET _ml/datafeeds/
POST _ml/datafeeds/
GET _ml/datafeeds/_preview
POST _ml/datafeeds/_preview
描述
edit预览数据馈送 API 返回数据馈送中搜索结果的第一页。您可以预览现有的数据馈送,或在 API 中提供数据馈送和异常检测作业的配置详细信息。预览显示将传递给异常检测引擎的数据结构。
当启用了Elasticsearch安全功能时,数据馈送查询将使用调用预览数据馈送API的用户的凭据进行预览。当数据馈送启动时,它将使用最后创建或更新它的用户的角色运行查询。如果这两组角色不同,则预览可能无法准确反映数据馈送启动时将返回的内容。为了避免此类问题,创建或更新数据馈送的同一用户应预览它,以确保它返回预期的数据。或者,使用二次授权头来提供凭据。
路径参数
edit-
<datafeed_id> -
(可选, 字符串) 一个唯一标识数据流的数字字符串。此标识符可以包含小写字母数字字符(a-z 和 0-9)、连字符和下划线。它必须以字母数字字符开头和结尾。
如果你提供
作为路径参数,你不能在请求体中提供数据馈送或异常检测作业的配置细节。
查询参数
edit-
end -
(可选,字符串) 数据流预览应结束的时间。预览可能不会到达所提供值的末尾,因为仅返回结果的第一页。时间可以通过使用以下格式之一来指定:
-
ISO 8601格式带毫秒,例如
2017-01-22T06:00:00.000Z -
ISO 8601格式不带毫秒,例如
2017-01-22T06:00:00+00:00 -
自纪元以来的毫秒数,例如
1485061200000
使用ISO 8601格式之一的日期时间参数必须具有时区标识符,其中
Z被接受为UTC时间的缩写。当需要一个URL时(例如,在浏览器中),时间区标识符中使用的
+必须编码为%2B。此值是独占的。
-
ISO 8601格式带毫秒,例如
-
start -
(可选,字符串) 数据流预览应开始的时间,可以使用与
end参数相同的格式来指定。该值是包含的。
如果你没有提供start或end参数,数据馈送预览将在整个时间段内进行搜索,但会排除位于cold或frozen 数据层中的数据。
请求体
edit-
datafeed_config - (可选, 对象) 要预览的数据馈送定义。有关有效的定义,请参阅 创建数据馈送 API。
-
job_config -
(可选,对象) 与数据馈送关联的异常检测作业的配置详细信息。如果
datafeed_config对象不包含引用现有异常检测作业的job_id,则必须提供此job_config对象。如果同时包含job_id和job_config,则使用后者的信息。除非同时提供datafeed_config对象,否则不能指定job_config对象。有关有效定义,请参阅 创建异常检测作业 API。
示例
edit这是一个提供现有数据源ID的示例:
GET _ml/datafeeds/datafeed-high_sum_total_sales/_preview
此示例返回的数据如下:
[
{
"order_date" : 1574294659000,
"category.keyword" : "Men's Clothing",
"customer_full_name.keyword" : "Sultan Al Benson",
"taxful_total_price" : 35.96875
},
{
"order_date" : 1574294918000,
"category.keyword" : [
"Women's Accessories",
"Women's Clothing"
],
"customer_full_name.keyword" : "Pia Webb",
"taxful_total_price" : 83.0
},
{
"order_date" : 1574295782000,
"category.keyword" : [
"Women's Accessories",
"Women's Shoes"
],
"customer_full_name.keyword" : "Brigitte Graham",
"taxful_total_price" : 72.0
}
]
以下示例提供了数据馈送和异常检测作业配置的API详细信息:
POST _ml/datafeeds/_preview
{
"datafeed_config": {
"indices" : [
"kibana_sample_data_ecommerce"
],
"query" : {
"bool" : {
"filter" : [
{
"term" : {
"_index" : "kibana_sample_data_ecommerce"
}
}
]
}
},
"scroll_size" : 1000
},
"job_config": {
"description" : "Find customers spending an unusually high amount in an hour",
"analysis_config" : {
"bucket_span" : "1h",
"detectors" : [
{
"detector_description" : "High total sales",
"function" : "high_sum",
"field_name" : "taxful_total_price",
"over_field_name" : "customer_full_name.keyword"
}
],
"influencers" : [
"customer_full_name.keyword",
"category.keyword"
]
},
"analysis_limits" : {
"model_memory_limit" : "10mb"
},
"data_description" : {
"time_field" : "order_date",
"time_format" : "epoch_ms"
}
}
}
此示例返回的数据如下:
[
{
"order_date" : 1574294659000,
"category.keyword" : "Men's Clothing",
"customer_full_name.keyword" : "Sultan Al Benson",
"taxful_total_price" : 35.96875
},
{
"order_date" : 1574294918000,
"category.keyword" : [
"Women's Accessories",
"Women's Clothing"
],
"customer_full_name.keyword" : "Pia Webb",
"taxful_total_price" : 83.0
},
{
"order_date" : 1574295782000,
"category.keyword" : [
"Women's Accessories",
"Women's Shoes"
],
"customer_full_name.keyword" : "Brigitte Graham",
"taxful_total_price" : 72.0
}
]
重置异常检测作业 API
edit重置现有的异常检测作业。
请求
editPOST _ml/anomaly_detectors/
前提条件
edit-
需要
manage_ml集群权限。此权限包含在machine_learning_admin内置角色中。 -
在重置作业之前,您必须关闭它。关闭作业时,可以将
force设置为true,以避免等待作业完成。请参阅关闭作业。
路径参数
edit-
<job_id> - (必需, 字符串) 异常检测作业的标识符。
查询参数
edit-
wait_for_completion -
(可选,布尔值) 指定请求是否应立即返回或等待作业重置完成。默认为
true。 -
delete_user_annotations -
(可选,布尔值) 指定在重置作业时,是否应删除用户添加的注释以及任何自动生成的注释。默认为
false。
示例
editPOST _ml/anomaly_detectors/total-requests/_reset
当作业重置时,您会收到以下结果:
{
"acknowledged": true
}
在下一个示例中,我们异步重置了 total-requests 作业:
POST _ml/anomaly_detectors/total-requests/_reset?wait_for_completion=false
当 wait_for_completion 设置为 false 时,响应包含作业重置任务的ID:
{
"task": "oTUltX4IQMOUUVeiohTt8A:39"
}
如果您想检查重置任务的状态,请通过引用任务ID使用任务管理。
恢复模型快照 API
edit恢复到特定快照。
请求
editPOST _ml/anomaly_detectors/
先决条件
edit- 在恢复到已保存的快照之前,您必须关闭作业。
-
需要
manage_ml集群权限。此权限包含在machine_learning_admin内置角色中。
描述
edit机器学习功能对异常输入反应迅速,能够在数据中学习新的行为。高度异常的输入会增加模型的方差,而系统则在学习这是否是行为的新步骤变化或一次性事件。如果已知这种异常输入是一次性的,那么可能需要将模型状态重置到此事件之前的时间点。例如,您可能会考虑在黑色星期五或系统严重故障后恢复到保存的快照。
恢复到快照不会改变异常检测作业的data_counts值,这些值不会恢复到之前的状态。
路径参数
edit-
<job_id> - (必需, 字符串) 异常检测作业的标识符。
-
<snapshot_id> -
(必需, 字符串) 模型快照的标识符。
您可以将
empty指定为。恢复到 empty快照意味着当异常检测作业启动时,它将从头开始学习一个新的模型。
查询参数
edit-
delete_intervening_results -
(可选,布尔值) 如果为 true,则删除最新结果与回退快照时间之间时间段内的结果。它还会将模型重置为接受该时间段内的记录。默认值为 false。
如果您选择在还原快照时不删除中间结果,作业将不接受比当前时间更早的输入数据。如果您想重新发送数据,请删除中间结果。
请求体
edit您还可以在请求体中指定delete_intervening_results查询参数。
示例
editPOST _ml/anomaly_detectors/low_request_rate/model_snapshots/1637092688/_revert
{
"delete_intervening_results": true
}
当操作完成时,您将收到以下结果:
{
"model" : {
"job_id" : "low_request_rate",
"min_version" : "7.11.0",
"timestamp" : 1637092688000,
"description" : "State persisted due to job close at 2021-11-16T19:58:08+0000",
"snapshot_id" : "1637092688",
"snapshot_doc_count" : 1,
"model_size_stats" : {
"job_id" : "low_request_rate",
"result_type" : "model_size_stats",
"model_bytes" : 45200,
"peak_model_bytes" : 101552,
"model_bytes_exceeded" : 0,
"model_bytes_memory_limit" : 11534336,
"total_by_field_count" : 3,
"total_over_field_count" : 0,
"total_partition_field_count" : 2,
"bucket_allocation_failures_count" : 0,
"memory_status" : "ok",
"assignment_memory_basis" : "current_model_bytes",
"categorized_doc_count" : 0,
"total_category_count" : 0,
"frequent_category_count" : 0,
"rare_category_count" : 0,
"dead_category_count" : 0,
"failed_category_count" : 0,
"categorization_status" : "ok",
"log_time" : 1637092688530,
"timestamp" : 1641495600000
},
"latest_record_time_stamp" : 1641502169000,
"latest_result_time_stamp" : 1641495600000,
"retain" : false
}
}
有关这些属性的描述,请参阅 获取模型快照 API。
启动数据流 API
edit启动一个或多个数据流。
请求
editPOST _ml/datafeeds/
先决条件
edit- 在启动数据馈送之前,异常检测作业必须处于开启状态。否则,会发生错误。
-
需要
manage_ml集群权限。此权限包含在machine_learning_admin内置角色中。
描述
edit必须启动数据馈送才能从 Elasticsearch 检索数据。 数据馈送可以在其生命周期内多次启动和停止。
如果你重新启动一个已停止的数据流,默认情况下它将继续处理输入数据,从停止后的下一毫秒开始。如果在停止和启动之间为该确切毫秒索引了新数据,它将被忽略。
当启用了Elasticsearch安全功能时,您的数据馈送会记住最后一位创建或更新它的用户在创建/更新时所拥有的角色,并使用这些相同的角色运行查询。如果您在创建或更新数据馈送时提供了二次授权头,则将使用这些凭据。
路径参数
edit-
<feed_id> - (必需,字符串) 一个唯一标识数据流的数字字符串。此标识符可以包含小写字母数字字符(a-z 和 0-9)、连字符和下划线。它必须以字母数字字符开头和结尾。
查询参数
edit-
end -
(可选,字符串) 数据馈送应结束的时间,可以使用以下格式之一来指定:
-
ISO 8601格式带毫秒,例如
2017-01-22T06:00:00.000Z -
ISO 8601格式不带毫秒,例如
2017-01-22T06:00:00+00:00 -
自纪元以来的毫秒数,例如
1485061200000
使用ISO 8601格式之一的日期时间参数必须具有时区标识符,其中
Z被接受为UTC时间的缩写。当需要一个URL时(例如,在浏览器中),时间区标识符中使用的
+必须编码为%2B。此值是排他的。如果您未指定结束时间,数据馈送将连续运行。
-
ISO 8601格式带毫秒,例如
-
start -
(可选,字符串) 数据馈送应开始的时间,可以使用与
end参数相同的格式来指定。此值是包含的。如果不指定开始时间,并且数据馈送与一个新的异常检测作业相关联,分析将从最早的可用数据时间开始。
如果您重新启动已停止的数据馈送并指定一个早于最新处理记录时间戳的
start值,数据馈送将从最新处理记录时间戳后的1毫秒继续。 -
timeout - (可选,时间) 指定数据馈送开始前的等待时间。 默认值是20秒。
请求体
edit您还可以在请求体中指定查询参数(例如 end 和 start)。
响应体
edit-
node - (字符串) 数据馈送启动的节点的ID。如果数据馈送被允许延迟打开且尚未分配给节点,则此值为空字符串。
-
started -
(布尔值) 对于成功的响应,此值始终为
true。在失败的情况下,将返回异常。
示例
editPOST _ml/datafeeds/datafeed-low_request_rate/_start
{
"start": "2019-04-07T18:22:16Z"
}
当数据馈送启动时,您会收到以下结果:
{
"started" : true,
"node" : "node-1"
}
停止数据流 API
edit停止一个或多个数据馈送。
先决条件
edit需要 manage_ml 集群权限。此权限包含在 machine_learning_admin 内置角色中。
描述
edit一个停止的数据馈送将不再从Elasticsearch中检索数据。 数据馈送可以在其生命周期内多次启动和停止。
路径参数
edit-
<feed_id> -
(必需,字符串)
数据流的标识符。您可以通过使用逗号分隔的数据流列表或通配符表达式在单个API请求中停止多个数据流。
您可以通过使用
_all或指定*作为标识符来关闭所有数据流。
查询参数
edit-
allow_no_match -
(可选, 布尔值) 指定在请求时执行的操作:
- 包含通配符表达式且没有匹配的数据馈送。
-
包含
_all字符串或没有标识符且没有匹配项。 - 包含通配符表达式且只有部分匹配。
默认值为
true,在没有匹配项时返回一个空的datafeeds数组,在有部分匹配项时返回部分结果。如果此参数为false,则在没有任何匹配项或只有部分匹配项时,请求将返回404状态码。 -
force - (可选,布尔值) 如果为 true,则强制停止数据馈送。
-
timeout - (可选,时间) 指定数据馈送停止前等待的时间量。 默认值是 20 秒。
请求体
edit您还可以在请求体中指定查询参数(例如 allow_no_match 和 force)。
响应代码
edit-
404(Missing resources) -
如果
allow_no_match是false,此代码表示没有与请求匹配的资源,或者只有部分匹配的请求。
示例
editPOST _ml/datafeeds/datafeed-low_request_rate/_stop
{
"timeout": "30s"
}
当数据馈送停止时,您会收到以下结果:
{
"stopped": true
}
更新数据流 API
edit更新数据流的某些属性。
请求
editPOST _ml/datafeeds/
前提条件
edit需要 manage_ml 集群权限。此权限包含在 machine_learning_admin 内置角色中。
描述
edit您只能在数据馈送停止时更新数据馈送属性。 然而,可以在不关闭关联作业的情况下停止数据馈送、更新其属性并重新启动它。
当启用了Elasticsearch安全功能时,您的数据馈送会记住更新时更新它的用户所拥有的角色,并使用这些相同的角色运行查询。如果您提供了二次授权头,则将使用这些凭证。
路径参数
edit-
<feed_id> - (必需,字符串) 一个唯一标识数据流的数字字符串。此标识符可以包含小写字母数字字符(a-z 和 0-9)、连字符和下划线。它必须以字母数字字符开头和结尾。
查询参数
edit-
allow_no_indices -
(可选,布尔值) 如果为
true,则通配符索引表达式解析为无具体索引时将被忽略。这包括_all字符串或未指定索引的情况。默认为true。 -
expand_wildcards -
(可选,字符串) 通配符模式可以匹配的索引类型。如果请求可以针对数据流,此参数确定通配符表达式是否匹配隐藏的数据流。支持逗号分隔的值,例如
open,hidden。有效值为:-
all - 匹配任何数据流或索引,包括 隐藏的 数据流和索引。
-
open - 匹配开放的、非隐藏的索引。同时也匹配任何非隐藏的数据流。
-
closed - 匹配关闭的、非隐藏的索引。同时也匹配任何非隐藏的数据流。数据流不能被关闭。
-
hidden -
匹配隐藏的数据流和隐藏的索引。必须与
open、closed或两者结合使用。 -
none - 不接受通配符模式。
默认为
open。 -
-
ignore_throttled -
(可选,布尔值) 如果为
true,冻结时会忽略具体的、扩展的或别名的索引。默认为true。[7.16.0] 在7.16.0中已弃用。
-
ignore_unavailable -
(可选,布尔值) 如果为
true,则忽略不可用的索引(缺失或关闭)。默认为false。
请求体
edit以下属性可以在数据馈送创建后进行更新:
-
aggregations - (可选, 对象) 如果设置,数据馈送执行聚合搜索。聚合的支持是有限的,并且应该仅用于低基数数据。更多信息,请参阅 聚合数据以加快性能。
-
chunking_config -
(可选, 对象) 数据馈送可能需要搜索长时间段,例如几个月或几年。为了确保Elasticsearch的负载得到管理,这种搜索被分割成时间块。块配置控制这些时间块的大小如何计算,这是一个高级配置选项。
Properties of
chunking_config-
mode -
(字符串) 有三种可用模式:
-
auto: 块大小是动态计算的。这是默认值,并且在数据馈送不使用聚合时推荐使用。 -
manual: 根据指定的time_span应用分块。当数据馈送使用聚合时使用此模式。 -
off: 不应用分块。
-
-
time_span -
(时间单位)
每个搜索将查询的时间跨度。此设置仅在模式设置为
manual时适用。例如:3h。
-
-
delayed_data_check_config -
(可选, 对象) 指定数据馈送是否检查缺失数据以及窗口的大小。例如:
{"enabled": true, "check_window": "1h"}。数据馈送可以选择性地搜索已经读取的索引,以确定是否有数据随后被添加到索引中。如果发现数据缺失,这表明
query_delay选项设置过低,数据在数据馈送通过该时间点后才被索引。请参阅处理延迟数据。此检查仅在实时数据馈送上运行。
Properties of
delayed_data_check_config-
check_window -
(时间单位)
搜索延迟数据的窗口时间。此窗口时间以最新的最终化桶结束。它默认为
null,这会在实时数据馈送运行时计算适当的check_window。特别是,默认的check_window跨度计算基于2h或8 * bucket_span的最大值。 -
enabled -
(布尔值)
指定数据馈送是否定期检查延迟数据。默认为
true。
-
-
frequency -
(可选, 时间单位)
在数据馈送实时运行时,计划查询的时间间隔。默认值是短桶跨度的桶跨度,或者对于较长的桶跨度,是桶跨度的一个合理分数。例如:
150s。当frequency比桶跨度短时,最后一个(部分)桶的临时结果会被写入,然后最终被完整的桶结果覆盖。如果数据馈送使用聚合,此值必须能被日期直方图聚合的间隔整除。 -
indices -
(可选, 数组) 一个索引名称的数组。支持通配符。例如:
["it_ops_metrics", "server*"]。如果任何索引位于远程集群中,则机器学习节点需要具有
remote_cluster_client角色。 -
indices_options -
(可选, 对象) 指定在搜索期间使用的索引扩展选项。
例如:
{ "expand_wildcards": ["all"], "ignore_unavailable": true, "allow_no_indices": "false", "ignore_throttled": true }有关这些选项的更多信息,请参阅多目标语法。
-
max_empty_searches -
(可选,整数) 如果一个实时数据馈送从未见过任何数据(包括在任何初始训练期间),那么它将在返回无文档的实时搜索达到此数量后自动停止自身并关闭其关联的作业。换句话说,它将在实时操作中停止
frequency乘以max_empty_searches次。如果未设置,则没有结束时间且未见任何数据的数据馈送将保持启动状态,直到明确停止。默认情况下,此设置未设置。特殊值
-1取消此设置。 -
query -
(可选, 对象) Elasticsearch 查询领域特定语言 (DSL)。此值对应于 Elasticsearch 搜索 POST 请求体中的 query 对象。所有 Elasticsearch 支持的选项都可以使用,因为这个对象是原样传递给 Elasticsearch 的。默认情况下,此属性具有以下值:
{"match_all": {"boost": 1}}。如果你更改查询,分析的数据也会随之改变。因此,学习所需的时间可能会很长,结果的可理解性也无法预测。如果你想对源数据进行重大修改,我们建议你克隆它并创建一个包含修改内容的第二个作业。让两者并行运行,当你对其中一个作业的结果满意时,再关闭另一个。
-
query_delay -
(可选,时间单位)
查询数据时,数据比实时时间落后的秒数。例如,如果10:04 a.m.的数据可能直到10:06 a.m.才能在Elasticsearch中搜索到,请将此属性设置为120秒。默认值在
60s和120s之间随机选择。这种随机性在同一节点上运行多个作业时提高了查询性能。有关更多信息,请参阅处理延迟数据。 -
runtime_mappings -
(可选, 对象) 指定数据馈送搜索的运行时字段。
例如:
{ "day_of_week": { "type": "keyword", "script": { "source": "emit(doc['@timestamp'].value.dayOfWeekEnum.getDisplayName(TextStyle.FULL, Locale.ENGLISH))" } } } -
script_fields - (可选,对象) 指定用于评估自定义表达式并返回脚本字段的脚本。作业中的检测器配置对象可以包含使用这些脚本字段的函数。有关更多信息,请参阅 使用脚本字段转换数据 和 脚本字段。
-
scroll_size -
(可选,无符号整数)
在 Elasticsearch 搜索中使用的
size参数,当数据馈送不使用聚合时。默认值为1000。最大值为index.max_result_window的值,默认情况下为 10,000。
示例
editPOST _ml/datafeeds/datafeed-test-job/_update
{
"query": {
"term": {
"geo.src": "US"
}
}
}
当数据源更新时,您会收到包含更新值的完整数据源配置:
{
"datafeed_id" : "datafeed-test-job",
"job_id" : "test-job",
"authorization" : {
"roles" : [
"superuser"
]
},
"query_delay" : "64489ms",
"chunking_config" : {
"mode" : "auto"
},
"indices_options" : {
"expand_wildcards" : [
"open"
],
"ignore_unavailable" : false,
"allow_no_indices" : true,
"ignore_throttled" : true
},
"query" : {
"term" : {
"geo.src" : "US"
}
},
"indices" : [
"kibana_sample_data_logs"
],
"scroll_size" : 1000,
"delayed_data_check_config" : {
"enabled" : true
}
}
更新过滤器 API
edit更新过滤器的描述,添加项目或移除项目。
请求
editPOST _ml/filters/
先决条件
edit需要 manage_ml 集群权限。此权限包含在 machine_learning_admin 内置角色中。
路径参数
edit-
<filter_id> - (必需, 字符串) 一个唯一标识过滤器的字符串。
请求体
edit-
add_items - (可选,字符串数组)要添加到过滤器中的项目。
-
description - (可选,字符串) 过滤器的描述。
-
remove_items - (可选,字符串数组) 要从过滤器中移除的项目。
示例
editPOST _ml/filters/safe_domains/_update
{
"description": "Updated list of domains",
"add_items": ["*.myorg.com"],
"remove_items": ["wikipedia.org"]
}
API返回以下结果:
{
"filter_id": "safe_domains",
"description": "Updated list of domains",
"items": ["*.google.com", "*.myorg.com"]
}
更新异常检测作业 API
edit更新异常检测作业的某些属性。
请求
editPOST _ml/anomaly_detectors/
先决条件
edit需要 manage_ml 集群权限。此权限包含在 machine_learning_admin 内置角色中。
路径参数
edit-
<job_id> - (必需, 字符串) 异常检测作业的标识符。
请求体
edit以下属性可以在作业创建后进行更新:
-
allow_lazy_open -
(布尔值) 高级配置选项。指定当没有足够的机器学习节点容量立即将其分配到节点时,此作业是否可以打开。默认值为
false;如果找不到具有运行作业容量的机器学习节点,打开异常检测作业 API将返回一个错误。然而,这也受集群范围的xpack.ml.max_lazy_ml_nodes设置的限制;请参阅高级机器学习设置。如果此选项设置为true,打开异常检测作业 API不会返回错误,并且作业会在opening状态下等待,直到有足够的机器学习节点容量可用。如果您在更新时作业是开放的,您必须停止数据馈送,关闭作业,然后重新打开作业并重新启动数据馈送,以使更改生效。
-
analysis_limits -
(可选, 对象) 可以为在内存中保存数学模型所需的资源应用限制。这些限制是近似的,可以按作业设置。它们不控制其他进程使用的内存,例如 Elasticsearch Java 进程。
您只能在作业关闭时更新
analysis_limits。Properties of
analysis_limits-
model_memory_limit -
(长整型或字符串) 分析处理所需的大致最大内存资源。一旦接近此限制,数据修剪将变得更加激进。超过此限制后,不再对新实体进行建模。在6.1及更高版本中创建的作业的默认值为
1024mb。然而,如果xpack.ml.max_model_memory_limit设置的值大于0且小于1024mb,则使用该值。如果未设置xpack.ml.max_model_memory_limit,但设置了xpack.ml.use_auto_machine_memory_percent,则默认的model_memory_limit将设置为集群中可能分配的最大大小,上限为1024mb。默认值相对较小,以确保高资源使用是经过深思熟虑的决定。如果您有预期会分析高基数字段的作业,您可能需要使用更高的值。从 Elasticsearch 8.10.0 开始,使用了一个新的版本号来跟踪机器学习插件中的配置和状态变化。这个新的版本号与产品版本解耦,并将独立递增。
如果你指定一个数字而不是字符串,单位将被假定为MiB。为了清晰起见,建议指定一个字符串。如果你指定一个字节大小单位为
b或kb,并且该数字不等于一个离散的兆字节数,它将被向下舍入到最接近的MiB。最小有效值是1 MiB。如果你指定一个小于1 MiB的值,将会发生错误。有关支持的字节大小单位的更多信息,请参阅字节大小单位。如果您为
xpack.ml.max_model_memory_limit设置指定了一个值,当您尝试创建model_memory_limit值大于该设置值的作业时,将会发生错误。更多信息,请参阅 Elasticsearch 中的机器学习设置。-
You cannot decrease the
model_memory_limitvalue below the current usage. To determine the current usage, refer to themodel_bytesvalue in the get job stats API. -
If the
memory_statusproperty in themodel_size_statsobject has a value ofhard_limit, this means that it was unable to process some data. You might want to re-run the job with an increasedmodel_memory_limit.
-
You cannot decrease the
-
-
background_persist_interval -
(时间单位) 高级配置选项。每次定期持久化模型之间的时间间隔。默认值是3到4小时之间的随机值,这样可以避免所有作业在完全相同的时间进行持久化。允许的最小值是1小时。
对于非常大的模型(几个GB),持久化可能需要10-20分钟, 因此不要将
background_persist_interval值设置得太低。如果您在更新时作业是开放的,您必须停止数据馈送,关闭作业,然后重新打开作业并重新启动数据馈送,以使更改生效。
-
custom_settings - (对象) 高级配置选项。包含有关作业的自定义元数据。例如,它可以包含自定义URL信息,如在 向机器学习结果添加自定义URL中所示。
-
daily_model_snapshot_retention_after_days -
(长) 高级配置选项,影响此作业的旧模型快照的自动删除。它指定了一个时间段(以天为单位),在此时间段后,每天仅保留第一个快照。此时间段相对于此作业的最新快照的时间戳。有效值范围从
0到model_snapshot_retention_days。对于新作业,默认值为1。对于在版本 7.8.0 之前创建的作业,默认值与model_snapshot_retention_days匹配。有关更多信息,请参阅 模型快照。从 Elasticsearch 8.10.0 开始,使用了一个新的版本号来跟踪机器学习插件中的配置和状态变化。这个新的版本号与产品版本解耦,并将独立递增。
-
description - (字符串) 作业的描述。
-
detectors -
(数组) 一个检测器更新对象的数组。
Properties of
detectors-
custom_rules -
(数组) 一个自定义规则对象的数组,使您能够自定义检测器的工作方式。例如,规则可以指示检测器在何种条件下应跳过结果。Kibana将自定义规则称为作业规则。更多示例,请参见 使用自定义规则自定义检测器。
Properties of
custom_rules-
actions -
(数组) 当规则适用时要触发的操作集合。如果指定了多个操作,所有操作的效果将合并。可用的操作包括:
-
skip_result: 结果将不会被创建。这是默认值。 除非您也指定了skip_model_update,模型将照常更新相应的系列值。 -
skip_model_update: 该系列的值将不会用于更新模型。 除非您也指定了skip_result,结果将照常创建。 此操作适用于某些值预期会持续异常且它们以负面影响其余结果的方式影响模型的情况。 -
force_time_shift: 此操作将按指定量在异常检测器内移动时间。 这很有用,例如,可以快速适应已知提前的夏令时事件。 此操作需要在params对象中指定force_time_shift参数。
-
-
params -
(对象) 一组参数对象,用于自定义在自定义规则中定义的操作 actions 数组。可用的参数(取决于指定的操作)包括:
force_time_shift。
-
conditions -
(数组) 一个可选的数值条件数组,当规则适用时。规则必须 要么有一个非空的范围,要么至少有一个条件。多个条件 通过逻辑
AND组合在一起。一个条件具有以下 属性:Properties of
conditions-
applies_to -
(string)
指定条件适用的结果属性。可用的
选项是
actual、typical、diff_from_typical、time。如果您的检测器 使用lat_long、metric、rare或freq_rare函数,您只能 指定适用于time的条件。 -
operator -
(string)
指定条件运算符。可用的选项是
gt(大于)、gte(大于或等于)、lt(小于)和lte(小于或 等于)。 -
value -
(double)
使用
operator与applies_to字段进行比较的值。
-
-
scope -
(对象) 规则适用的可选系列范围。规则必须具有非空范围或至少一个条件。默认情况下,范围包括所有系列。范围允许用于在
by_field_name、over_field_name或partition_field_name中指定的任何字段。要为字段添加范围,请将字段名称作为键添加到范围对象中,并将其值设置为具有以下属性的对象:Properties of
scope-
filter_id - (string) 要使用的过滤器的ID。
-
filter_type -
(string)
可以是
include(规则适用于过滤器中的值)或exclude(规则适用于过滤器外的值)。默认为include。
-
-
-
description -
(string)
检测器的描述。例如,
低事件率。 -
detector_index -
(整数) 检测器的唯一标识符。此标识符基于检测器在
analysis_config中的顺序,从零开始。如果您想更新特定检测器,您必须使用此标识符。但是,您不能更改检测器的
detector_index值。
-
-
groups - (字符串数组) 作业组的列表。一个作业可以不属于任何组,也可以属于多个组。
-
model_plot_config -
(对象) 此高级配置选项存储模型信息以及结果。它提供了更详细的异常检测视图。
如果您启用模型绘图,它可能会显著增加系统的性能开销;对于包含许多实体的任务来说,这是不可行的。
模型图提供了一个简化和指示性的模型及其边界视图。它不显示复杂特征,如多元相关性或多模态数据。因此,可能会偶尔报告一些在模型图中无法看到的异常。
模型绘图配置可以在创建作业时或稍后更新时进行配置。如果遇到性能问题,必须禁用它。
Properties of
model_plot_config-
annotations_enabled -
(布尔值)
如果为真,则启用计算和存储正在分析的每个实体的模型变化注释。默认为
enabled。 -
enabled - (布尔值) 如果为真,则启用计算和存储正在分析的每个实体的模型边界。默认情况下,此功能未启用。
-
terms -
[预览]
此功能处于技术预览阶段,可能会在未来的版本中进行更改或移除。Elastic 将努力修复任何问题,但技术预览中的功能不受官方 GA 功能支持 SLA 的约束。
(字符串)
将数据收集限制为此逗号分隔的分区或字段值列表。如果未指定术语或为空字符串,则不应用过滤。例如,"CPU,NetworkIn,DiskWrites"。不支持通配符。使用单指标查看器时,只能查看指定的
terms。
-
-
model_prune_window -
(时间单位)
高级配置选项。
影响对在给定时间内未更新的模型的修剪。值必须设置为
bucket_span的倍数。如果设置过低,可能会从模型中删除重要信息。通常,设置为30d或更长。如果未设置,仅当模型内存状态达到软限制或硬限制时才会进行模型修剪。对于在8.1及以后创建的作业,默认值是30d或20倍bucket_span中的较大者。 -
model_snapshot_retention_days -
(长整型)
高级配置选项,影响此作业的旧模型快照的自动删除。它指定快照保留的最大时间(以天为单位)。此时间段相对于此作业的最新快照的时间戳。默认值为
10,这意味着比最新快照早十天的快照将被删除。有关更多信息,请参阅 模型快照。
-
per_partition_categorization -
(对象) 与分区字段交互的分类设置。
Properties of
per_partition_categorization-
enabled - (布尔值) 要启用此设置,您还必须在每个使用关键字 mlcategory 的检测器中将 partition_field_name 属性设置为相同的值。否则,作业创建将失败。
-
stop_on_warn -
(布尔值)
此设置仅在启用按分区分类时才能设置为 true。如果为 true,则在分类状态变为
warn的分区中,分类和后续异常检测都将停止。此设置使得在某些分区中分类效果良好而在其他分区中效果不佳的情况下,作业仍然可行;您不会在分类效果不佳的分区中永远付出分类不良的代价。
-
renormalization_window_days -
(长整型)
高级配置选项。调整分数所依据的时间段,因为看到了新数据。默认值是 30 天或 100
bucket_spans中较长的一个。
如果您在更新时作业是开放的,您必须停止数据馈送,关闭作业,然后重新打开作业并重新启动数据馈送,以使更改生效。
-
results_retention_days - (长整型) 高级配置选项。结果保留的时间段(以天为单位)。年龄是相对于最新桶结果的时间戳计算的。如果此属性具有非空值,则在每天 00:30(服务器时间),比最新桶结果早指定天数的结果将从 Elasticsearch 中删除。默认值为 null,这意味着所有结果都将保留。系统生成的注释也计为保留目的的结果;它们在结果之后相同天数后删除。用户添加的注释将永久保留。
-
示例
editPOST _ml/anomaly_detectors/low_request_rate/_update
{
"description":"An updated job",
"detectors": {
"detector_index": 0,
"description": "An updated detector description"
},
"groups": ["kibana_sample_data","kibana_sample_web_logs"],
"model_plot_config": {
"enabled": true
},
"renormalization_window_days": 30,
"background_persist_interval": "2h",
"model_snapshot_retention_days": 7,
"results_retention_days": 60
}
当异常检测作业更新时,您会收到作业配置信息的摘要,包括更新的属性值。例如:
{
"job_id" : "low_request_rate",
"job_type" : "anomaly_detector",
"job_version" : "8.4.0",
"create_time" : 1656105950893,
"finished_time" : 1656105965744,
"model_snapshot_id" : "1656105964",
"custom_settings" : {
"created_by" : "ml-module-sample",
"custom_urls" : [
{
"url_name" : "Raw data",
"url_value" : "discover#/?_g=(time:(from:'$earliest$',mode:absolute,to:'$latest$'))&_a=(index:'90943e30-9a47-11e8-b64d-95841ca0b247')"
},
{
"url_name" : "Data dashboard",
"url_value" : "dashboards#/view/edf84fe0-e1a0-11e7-b6d5-4dc382ef7f5b?_g=(time:(from:'$earliest$',mode:absolute,to:'$latest$'))&_a=(filters:!(),query:(language:kuery,query:''))"
}
]
},
"groups" : [
"kibana_sample_data",
"kibana_sample_web_logs"
],
"description" : "An updated job",
"analysis_config" : {
"bucket_span" : "1h",
"summary_count_field_name" : "doc_count",
"detectors" : [
{
"detector_description" : "An updated detector description",
"function" : "low_count",
"detector_index" : 0
}
],
"influencers" : [ ],
"model_prune_window" : "30d"
},
"analysis_limits" : {
"model_memory_limit" : "11mb",
"categorization_examples_limit" : 4
},
"data_description" : {
"time_field" : "timestamp",
"time_format" : "epoch_ms"
},
"model_plot_config" : {
"enabled" : true,
"annotations_enabled" : true
},
"renormalization_window_days" : 30,
"background_persist_interval" : "2h",
"model_snapshot_retention_days" : 7,
"daily_model_snapshot_retention_after_days" : 1,
"results_retention_days" : 60,
"results_index_name" : "custom-low_request_rate",
"allow_lazy_open" : false
}
更新模型快照 API
edit更新快照的某些属性。
请求
editPOST _ml/anomaly_detectors/
先决条件
edit需要 manage_ml 集群权限。此权限包含在 machine_learning_admin 内置角色中。
路径参数
edit-
<job_id> - (必需, 字符串) 异常检测作业的标识符。
-
<snapshot_id> - (必需,字符串) 模型快照的标识符。
请求体
edit以下属性可以在模型快照创建后进行更新:
-
description - (可选,字符串) 模型快照的描述。
-
retain -
(可选, 布尔值)
如果为
true,此快照在超过model_snapshot_retention_days的自动清理过程中不会被删除。然而,当作业被删除时,此快照将被删除。默认值为false。
示例
editPOST
_ml/anomaly_detectors/it_ops_new_logs/model_snapshots/1491852978/_update
{
"description": "Snapshot 1",
"retain": true
}
当快照更新时,您会收到以下结果:
{
"acknowledged": true,
"model": {
"job_id": "it_ops_new_logs",
"timestamp": 1491852978000,
"description": "Snapshot 1",
...
"retain": true
}
}
升级模型快照 API
edit将异常检测模型快照升级到最新主要版本。
从 Elasticsearch 8.10.0 开始,使用了一个新的版本号来跟踪机器学习插件中的配置和状态变化。这个新的版本号与产品版本解耦,并将独立递增。
请求
editPOST _ml/anomaly_detectors/
前提条件
edit-
需要
manage_ml集群权限。此权限包含在machine_learning_admin内置角色中。 - 升级的快照必须与前一个主版本匹配。
- 升级的快照不能是当前的异常检测作业快照。
描述
edit随着时间的推移,旧的快照格式会被弃用并移除。异常检测作业仅支持来自当前或上一个主要版本的快照。
此API提供了一种将快照升级到当前主要版本的方法。 这有助于为集群升级到下一个主要版本做准备。
每个异常检测作业一次只能升级一个快照,并且升级的快照不能是当前异常检测作业的快照。
路径参数
edit-
<job_id> - (必需, 字符串) 异常检测作业的标识符。
-
<snapshot_id> - (必需,字符串) 模型快照的标识符。
查询参数
edit-
timeout - (可选,时间) 控制等待请求完成的时间。默认值为30分钟。
-
wait_for_completion - (可选,布尔值) 当为 true 时,API 在升级完成之前不会响应。否则,它会在升级任务分配给节点后立即响应。默认为 false。
响应体
edit-
node - (字符串) 如果升级任务仍在运行,则为分配给该任务的节点的ID。
-
completed - (布尔值) 当为真时,表示任务已完成。当为假时,表示任务仍在运行。
示例
editPOST _ml/anomaly_detectors/low_request_rate/model_snapshots/1828371/_upgrade?timeout=45m&wait_for_completion=true
当快照升级开始时,您会收到以下结果:
{
"completed" : false,
"node" : "node-1"
}