API получения задач обнаружения аномалий
Извлекает конфигурационную информацию для задач обнаружения аномалий.
Запрос
GET _ml/anomaly_detectors/<job_id>
GET _ml/anomaly_detectors/<job_id>,<job_id>
GET _ml/anomaly_detectors/
GET _ml/anomaly_detectors/_all
Предварительные условия
Требуется привилегия кластера monitor_ml. Эта привилегия включена в встроенную роль machine_learning_user.
Описание
Этот API возвращает не более 10 000 задач.
Параметры пути
-
<job_id> - (Необязательный, строка) Идентификатор задачи обнаружения аномалий. Это может быть идентификатор задачи, имя группы или выражение с подстановкой. Вы можете получить информацию о нескольких задачах обнаружения аномалий в одном запросе API, используя имя группы, список задач, разделённых запятыми, или выражение с подстановкой. Вы можете получить информацию обо всех задачах обнаружения аномалий, используя
_all, указав*в качестве идентификатора задачи или опуская идентификатор.
Параметры запроса
-
allow_no_match -
(Необязательный, логическое значение) Определяет действия при запросе:
- Содержит выражения с подстановкой, и нет совпадающих задач.
- Содержит строку
_allили нет идентификаторов, и нет совпадений. - Содержит выражения с подстановкой, и есть только частичные совпадения.
Значение по умолчанию -
true, которое возвращает пустой массивjobsпри отсутствии совпадений и подмножество результатов при частичных совпадениях. Если этот параметр равенfalse, запрос возвращает код состояния404при отсутствии совпадений или только частичных совпадениях. -
exclude_generated - (Необязательный, логическое значение) Указывает, следует ли удалять определённые поля из конфигурации при извлечении. Это позволяет конфигурации быть в приемлемом формате для извлечения и последующего добавления в другой кластер. Значение по умолчанию — false.
Тело ответа
API возвращает массив ресурсов задач обнаружения аномалий. Полный список свойств см. в API создания задач обнаружения аномалий.
-
blocked -
(объект) Если присутствует, объясняет, что задача выполняется в работе, которая блокирует её открытие.
Свойства
blocked-
reason - (строка) Причина блокировки работы. Значения могут быть
delete,reset,revert. Каждое значение означает, что выполняется соответствующее действие. -
task_id - (строка) Идентификатор задачи блокирующего действия. Вы можете использовать API управления задачами управления задачами для мониторинга прогресса.
-
-
create_time - (строка) Время создания задачи. Например,
1491007356077. Это свойство информационное; вы не можете изменить его значение. -
datafeed_config -
(объект) Источник данных, настроенный для текущей задачи обнаружения аномалий.
Свойства
datafeed_config-
authorization -
(Необязательный, объект) Права доступа к безопасности, используемые источником данных для выполнения запросов. Если функции безопасности Elastic Stack были отключены во время последнего обновления источника данных, это свойство опускается.
Свойства
authorization-
api_key -
(объект) Если для последнего обновления источника данных использовался ключ API, его имя и идентификатор указаны в ответе.
Свойства
api_key-
id - (строка) Идентификатор ключа API.
-
name - (строка) Название ключа API.
-
-
roles - (массив строк) Если для последнего обновления источника данных использовался идентификатор пользователя, его роли на момент обновления указаны в ответе.
-
service_account - (строка) Если для последнего обновления источника данных использовалась учетная запись сервиса, имя учетной записи указано в ответе.
-
-
datafeed_id - (Необязательная, строка) Числовая строка, которая уникально идентифицирует источник данных. Этот идентификатор может содержать строчные буквенно-цифровые символы (a-z и 0-9), дефисы и символы подчеркивания. Он должен начинаться и заканчиваться буквенно-цифровыми символами.
-
aggregations - (Необязательный, объект) Если задано, источник данных выполняет агрегационные запросы. Поддержка агрегаций ограничена и должна использоваться только с данными с низкой кардинальностью. Дополнительную информацию см. в Агрегирование данных для повышения производительности.
-
chunking_config -
(Необязательный, объект) Источники данных могут потребоваться для поиска за длительные периоды времени, в течение нескольких месяцев или лет. Этот поиск разделен на временные блоки, чтобы гарантировать, что нагрузка на Elasticsearch контролируется. Настройка разбиения управляет тем, как вычисляется размер этих временных блоков и является расширенным параметром конфигурации.
Свойства
chunking_config-
mode -
(строка) Доступно три режима:
-
auto: Размер блока динамически рассчитывается. Это значение по умолчанию и рекомендуется, когда источник данных не использует агрегации. -
manual: Разбиение выполняется в соответствии с указаннымtime_span. Используйте этот режим, когда источник данных использует агрегации. -
off: Разбиение не применяется.
-
-
time_span - (единицы времени) Временной интервал, который будет запрашивать каждый поиск. Этот параметр применим только тогда, когда режим установлен в
manual. Например:3h.
-
-
delayed_data_check_config -
(Необязательный, объект) Указывает, проверяет ли источник данных наличие пропущенных данных и размер окна. Например:
{"enabled": true, "check_window": "1h"}.Источник данных может дополнительно искать в индексах, которые уже были прочитаны, чтобы определить, были ли добавлены какие-либо данные в индекс после этого момента. Если обнаружены недостающие данные, это хороший признак того, что значение параметра
query_delayслишком низкое, и данные индексируются после того, как источник данных прошел этот момент во времени. См. Работа с отложенными данными.Эта проверка выполняется только для источников данных в реальном времени.
Свойства
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). Это значение соответствует объекту запроса в теле POST-запроса поиска Elasticsearch. Можно использовать все поддерживаемые Elasticsearch параметры, так как этот объект передаётся в Elasticsearch без изменений. По умолчанию это свойство имеет следующее значение:
{"match_all": {"boost": 1}}. -
query_delay - (Необязательный, единицы времени) Количество секунд за реальным временем, за которые запрашиваются данные. Например, если данные с 10:04 утра могут не быть доступны для поиска в Elasticsearch до 10:06 утра, установите это свойство в 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 - (Необязательный, целое без знака) Параметр
size, который используется в запросах Elasticsearch, когда источник данных не использует агрегации. Значение по умолчанию равно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.
Коды ответов
-
404(Отсутствующие ресурсы) - Если
allow_no_matchравноfalse, этот код указывает на то, что нет ресурсов, соответствующих запросу, или только частичные совпадения для запроса.
Примеры
resp = client.ml.get_jobs(
job_id="high_sum_total_sales",
)
print(resp) response = client.ml.get_jobs( job_id: 'high_sum_total_sales' ) puts response
const response = await client.ml.getJobs({
job_id: "high_sum_total_sales",
});
console.log(response); GET _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
}
]
}
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/ml-get-job.html