Spec-Zone.ru › Elasticsearch 7
›Руководство по Elasticsearch [7.17] ›REST API ›API обнаружения аномалий машинного обучения

API создания каналов данных

Создает канал данных.

Запрос

PUT _ml/datafeeds/<feed_id>

Предварительные условия

  • Необходимо создать задание обнаружения аномалий перед созданием канала данных.
  • Требуются следующие привилегии:

    • cluster: manage_ml (роль machine_learning_admin предоставляет эту привилегию)
    • индекс источника, настроенный в канале данных: read

Описание

Каналы данных извлекают данные из 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API