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

API обновления источников данных

Обновляет определённые свойства источника данных.

Запрос

POST _ml/datafeeds/<feed_id>/_update

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

Требуется привилегия кластера manage_ml. Эта привилегия включена в встроенную роль machine_learning_admin.

Описание

Вы можете обновить свойство источника данных только когда источник данных остановлен. Однако можно остановить источник данных, обновить одно из его свойств и перезапустить его, не закрывая связанную задачу.

При включённых средствах безопасности 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
(Необязательный объект) Если задано, канал данных выполняет агрегированные поиски. Поддержка агрегаций ограничена и должна использоваться только с данными низкой кардинальности. Дополнительная информация находится в статье об агрегировании данных для повышения производительности.
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
}

Дополнительная информация об этих параметрах находится в разделе о многоцелевом синтаксисе.

max_empty_searches

(Необязательный целочисленный параметр) Если канал данных в реальном времени никогда не видел никаких данных (включая период начальной тренировки), он автоматически остановится и закроет связанную работу после этого количества поисков в реальном времени, которые не возвращают документы. Другими словами, он остановится после frequency раз max_empty_searches работы в реальном времени. Если не задано, канал данных без конечной даты, не получивший данные, будет оставаться запущенным до явного остановления. По умолчанию эта настройка не задана.

Специальное значение -1 сбрасывает эту настройку.

query

(Необязательный объект) Язык запросов Elasticsearch (DSL). Это значение соответствует объекту запроса в теле POST-запроса поиска Elasticsearch. Все поддерживаемые Elasticsearch параметры могут быть использованы, так как этот объект передаётся Elasticsearch в неизменном виде. По умолчанию этот параметр имеет следующее значение: {"match_all": {"boost": 1}}.

Если вы измените запрос, изменятся и проанализированные данные. Поэтому время обучения может быть долгим, а понимание результатов непредсказуемым. Если вы хотите внести значительные изменения в исходные данные, мы рекомендуем создать копию и создать вторую работу, содержащую изменения. Запустите оба параллельно и закройте один, когда будете довольны результатами другой работы.

query_delay
(Необязательно, единицы времени) Количество секунд отставания от реального времени при запросе данных. Например, если данные с 10:04 не могут быть доступны в Elasticsearch до 10:06, установите этот параметр в 120 секунд. Значение по умолчанию выбирается случайно между 60s и 120s. Эта случайность улучшает производительность запросов, когда на одном узле работает несколько работ. Для получения дополнительной информации смотрите обработку отстающих данных.
runtime_mappings

(Необязательный объект) Указывает поля runtime для поиска канала данных.

Например:

{
  "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.

Примеры

POST _ml/datafeeds/datafeed-total-requests/_update
{
  "query": {
    "term": {
      "level": "error"
    }
  }
}

При обновлении канала данных вы получаете полную конфигурацию канала данных с обновлёнными значениями:

{
  "datafeed_id": "datafeed-total-requests",
  "job_id": "total-requests",
  "query_delay": "83474ms",
  "indices": ["server-metrics"],
  "query": {
    "term": {
      "level": {
        "value": "error",
        "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-update-datafeed.html

Spec-Zone.ru

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