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при выполнении потока данных в реальном времени. В частности, расчет интервала по умолчанию основан на максимальном значении между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.
Примеры
resp = client.ml.update_datafeed(
datafeed_id="datafeed-test-job",
query={
"term": {
"geo.src": "US"
}
},
)
print(resp) response = client.ml.update_datafeed(
datafeed_id: 'datafeed-test-job',
body: {
query: {
term: {
'geo.src' => 'US'
}
}
}
)
puts response const response = await client.ml.updateDatafeed({
datafeed_id: "datafeed-test-job",
query: {
term: {
"geo.src": "US",
},
},
});
console.log(response); POST _ml/datafeeds/datafeed-test-job/_update
{
"query": {
"term": {
"geo.src": "US"
}
}
} При обновлении потока данных вы получите полную конфигурацию потока данных с обновлёнными значениями:
{
"datafeed_id" : "datafeed-test-job",
"job_id" : "test-job",
"authorization" : {
"roles" : [
"superuser"
]
},
"query_delay" : "64489ms",
"chunking_config" : {
"mode" : "auto"
},
"indices_options" : {
"expand_wildcards" : [
"open"
],
"ignore_unavailable" : false,
"allow_no_indices" : true,
"ignore_throttled" : true
},
"query" : {
"term" : {
"geo.src" : "US"
}
},
"indices" : [
"kibana_sample_data_logs"
],
"scroll_size" : 1000,
"delayed_data_check_config" : {
"enabled" : true
}
}
© 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-update-datafeed.html