API создания каналов данных
Создает канал данных.
Запрос
PUT _ml/datafeeds/<feed_id>
Предварительные условия
- Необходимо создать задание обнаружения аномалий перед созданием канала данных.
-
Требуются следующие привилегии:
- cluster:
manage_ml(рольmachine_learning_adminпредоставляет эту привилегию) - индекс источника, настроенный в канале данных:
read
- cluster:
Описание
Каналы данных извлекают данные из Elasticsearch для анализа заданием обнаружения аномалий. К каждому заданию обнаружения аномалий можно привязать только один канал данных.
Канал данных содержит запрос, выполняющийся с заданным интервалом (frequency). Если вы обеспокоены задержкой данных, можно добавить задержку (query_delay) на каждом интервале. См. Обработка данных с задержкой.
- Необходимо использовать Kibana, этот API или API создания заданий обнаружения аномалий для создания канала данных. Не добавляйте канал данных напрямую в индекс
.ml-configс помощью API индексов Elasticsearch. При включенных функциях безопасности Elasticsearch не предоставляйте пользователям привилегииwriteна индексе.ml-config. - При включенных функциях безопасности Elasticsearch ваш канал данных запоминает роли пользователя, который его создал, и выполняет запрос с использованием тех же ролей. Если вы предоставляете дополнительные заголовки авторизации, будут использоваться эти учетные данные.
Параметры пути
-
<feed_id> - (Обязательно, строка) Числовая строка, уникально идентифицирующая канал данных. Этот идентификатор может содержать строчные алфавитно-цифровые символы (a-z и 0-9), дефисы и подчеркивания. Он должен начинаться и заканчиваться алфавитно-цифровыми символами.
Параметры запроса
-
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.
Тело запроса
-
aggregations - (Необязательный объект) Если задано, datafeed выполняет агрегационные запросы. Поддержка агрегаций ограничена и должна использоваться только с данными низкой кардинальности. Дополнительную информацию см. в разделе Агрегирование данных для повышения производительности.
-
chunking_config -
(Необязательный объект) Datafeed может потребоваться выполнять поиск за длительные периоды времени, в течение нескольких месяцев или лет. Этот поиск разбивается на временные сегменты, чтобы обеспечить управление нагрузкой на Elasticsearch. Конфигурация сегментов контролирует, как рассчитывается размер этих временных сегментов, и является расширенным параметром конфигурации.
Свойства
chunking_config-
mode -
(строка) Доступно три режима:
-
auto: Размер сегмента вычисляется динамически. Это значение по умолчанию и рекомендуется, когда datafeed не использует агрегации. -
manual: Сегментирование применяется в соответствии с указаннымtime_span. Используйте этот режим, когда datafeed использует агрегации. -
off: Сегментирование не применяется.
-
-
time_span - (единицы измерения времени) Временной интервал, за который будет выполняться каждый поиск. Этот параметр применим только когда режим установлен на
manual. Например:3h.
-
-
delayed_data_check_config -
(Необязательный объект) Указывает, проверяет ли datafeed пропущенные данные и размер окна. Например:
{"enabled": true, "check_window": "1h"}.Datafeed может (необязательно) выполнять поиск по индексам, которые уже были прочитаны, чтобы определить, были ли впоследствии добавлены данные в индекс. Если обнаружены отсутствующие данные, это хороший признак того, что значение параметра
query_delayустановлено слишком низко, и данные индексируются после того, как datafeed прошел тот момент во времени. Смотрите Работа с отстающими данными.Эта проверка выполняется только для datafeed в реальном времени.
Свойства
delayed_data_check_config-
check_window - (единицы измерения времени) Окно времени, в котором ищут отстающие данные. Это окно времени заканчивается последней завершённой областью. По умолчанию установлено значение
null, что приводит к вычислению соответствующегоcheck_windowпри выполнении datafeed в реальном времени. В частности, вычисление по умолчанию дляcheck_windowосновано на максимальном значении между2hи8 * bucket_span. -
enabled - (Булево) Указывает, периодически ли datafeed проверяет отстающие данные. По умолчанию установлено значение
true.
-
-
frequency - (Необязательно, единицы измерения времени) Интервал, с которым запланированные запросы выполняются, когда datafeed работает в реальном времени. Значение по умолчанию - либо интервал области, для коротких областей, либо, для длинных областей, разумная часть интервала области. Например:
150s. Еслиfrequencyкороче интервала области, промежуточные результаты для последней (частичной) области записываются, а затем в конечном итоге перезаписываются результатами полной области. Если datafeed использует агрегации, это значение должно быть кратно интервалу агрегации гистограммы дат. -
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 - (Необязательное целое число) Если datafeed в реальном времени никогда не видел никаких данных (в том числе во время начального периода обучения), он автоматически остановится и закроет связанную задачу после этого количества запросов в реальном времени, которые не возвращают документов. Другими словами, он остановится после
frequencyразmax_empty_searchesработы в реальном времени. Если этот параметр не задан, datafeed без конечной даты, который не видит данных, будет оставаться запущенным до явного остановки. По умолчанию этот параметр не задан. -
query - (Необязательный объект) Язык запросов Elasticsearch (DSL). Это значение соответствует объекту запроса в теле POST-запроса поиска Elasticsearch. Можно использовать все поддерживаемые Elasticsearch параметры, поскольку этот объект передаётся Elasticsearch без изменений. По умолчанию этот параметр имеет следующее значение:
{"match_all": {"boost": 1}}. -
query_delay - (Необязательно, единицы измерения времени) Количество секунд за реальным временем, за которое запрашиваются данные. Например, если данные с 10:04 утра могут быть доступны для поиска в Elasticsearch только к 10:06 утра, установите этот параметр в 120 секунд. Значение по умолчанию случайным образом выбрано между
60sи120s. Эта случайность улучшает производительность запросов, когда на одном узле работают несколько задач. Дополнительную информацию см. в разделе Обработка отстающих данных. -
runtime_mappings -
(Необязательный объект) Указывает поля выполнения для поиска datafeed.
Например:
{ "day_of_week": { "type": "keyword", "script": { "source": "emit(doc['@timestamp'].value.dayOfWeekEnum.getDisplayName(TextStyle.FULL, Locale.ENGLISH))" } } } -
script_fields - (Необязательный объект) Указывает скрипты, которые оценивают пользовательские выражения и возвращают поля скриптов datafeed. Объекты конфигурации детектора в задаче могут содержать функции, которые используют эти поля скриптов. Дополнительную информацию см. в разделе Преобразование данных с помощью полей скриптов и Поля скриптов.
-
scroll_size - (Необязательное целое без знака) Параметр
size, используемый в запросах Elasticsearch, когда datafeed не использует агрегации. Значение по умолчанию -1000. Максимальное значение равно значениюindex.max_result_window, которое по умолчанию равно 10 000.
Примеры
PUT _ml/datafeeds/datafeed-total-requests
{
"job_id": "total-requests",
"indices": ["server-metrics"]
} При создании datafeed вы получаете следующие результаты:
{
"datafeed_id": "datafeed-total-requests",
"job_id": "total-requests",
"query_delay": "83474ms",
"indices": [
"server-metrics"
],
"query": {
"match_all": {
"boost": 1.0
}
},
"scroll_size": 1000,
"chunking_config": {
"mode": "auto"
}
}
© 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/7.17/ml-put-datafeed.html