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