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

API создания заданий по обнаружению аномалий

Новая справочная информация по API

Для получения самых актуальных сведений об API обратитесь к разделу API обнаружения аномалий машинного обучения.

Создает задание по обнаружению аномалий.

Запрос

PUT _ml/anomaly_detectors/<job_id>

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

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

Если вы включаете datafeed_config, вам также необходимы права доступа к индексу read для исходного индекса.

Описание

  • Вы должны использовать Kibana или этот API для создания задания по обнаружению аномалий. Не добавляйте задание непосредственно в индекс .ml-config с помощью API индекса Elasticsearch. Если включены функции безопасности Elasticsearch, не предоставляйте пользователям права доступа write к индексу .ml-config.
  • Если вы включаете datafeed_config и включены функции безопасности Elasticsearch, ваш источник данных запоминает роли пользователя, который его создал, во время создания и выполняет запрос, используя те же роли. Если вы предоставляете заголовки вторичной авторизации, вместо них используются эти учетные данные.

Параметры пути

<job_id>
(Обязательно, строка) Идентификатор задания по обнаружению аномалий. Этот идентификатор может содержать строчные буквенно-цифровые символы (a-z и 0-9), дефисы и символы подчеркивания. Он должен начинаться и заканчиваться буквенно-цифровыми символами.

Тело запроса

allow_lazy_open
(Необязательно, логическое значение) Расширенный параметр конфигурации. Указывает, может ли это задание открыться, если недостаточно емкости узла машинного обучения для его немедленного назначения узлу. Значение по умолчанию — false; если узел машинного обучения с емкостью для выполнения задания не может быть немедленно найден, API открытия заданий по обнаружению аномалий возвращает ошибку. Однако это также зависит от настройки xpack.ml.max_lazy_ml_nodes всего кластера; см. Расширенные параметры машинного обучения. Если этот параметр установлен в true, API открытия заданий по обнаружению аномалий не возвращает ошибку, и задание ожидает в состоянии opening, пока не станет доступна достаточная емкость узла машинного обучения.
analysis_config

(Обязательно, объект) Конфигурация анализа, которая указывает, как анализировать данные. После создания задания вы не можете изменить конфигурацию анализа; все свойства являются информационными.

Свойства analysis_config
bucket_span
(Единицы времени) Размер интервала, в который агрегируется анализ, обычно от 5m до 1h. Это значение должно быть целым числом дней или эквивалентом целого числа сегментов в один день; [8.1] Устарело в 8.1. Значения, не соответствующие этим рекомендациям, устарели и будут запрещены в будущей версии . Если задание по обнаружению аномалий использует источник данных с агрегациями, это значение также должно делиться на интервал агрегации гистограммы дат. Значение по умолчанию — 5m. Для получения дополнительной информации см. Диапазон сегментов.
categorization_analyzer

(объект или строка) Если указан categorization_field_name, вы также можете определить анализатор, используемый для интерпретации поля категоризации. Это свойство не может использоваться одновременно с categorization_filters. Анализатор категоризации указывает, как categorization_field интерпретируется процессом категоризации. Синтаксис очень похож на тот, который используется для определения analyzer в конечной точке Analyze. Для получения дополнительной информации см. Категоризация сообщений журналов.

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

Свойства categorization_analyzer
char_filter
(массив строк или объектов) Один или несколько фильтров символов. В дополнение к встроенным фильтрам символов другие плагины могут предоставлять дополнительные фильтры символов. Это свойство является необязательным. Если оно не указано, перед категоризацией не применяются фильтры символов. Если вы настраиваете какой-либо другой аспект анализатора и вам нужно добиться эквивалента categorization_filters (которые не допускаются, когда настраивается какой-либо другой аспект анализатора), добавьте их сюда как фильтры символов замены по шаблону.
tokenizer
(строка или объект) Имя или определение токенизатора, который нужно использовать после применения фильтров символов. Это свойство обязательно, если categorization_analyzer указан как объект. Машинное обучение предоставляет токенизатор под названием ml_standard, который выполняет токенизацию таким образом, который, как было установлено, дает хорошие результаты категоризации в различных форматах файлов журналов для журналов на английском языке. Если вы хотите использовать этот токенизатор, но изменить фильтры символов или токенов, укажите "tokenizer": "ml_standard" в своем categorization_analyzer. Кроме того, доступен токенизатор ml_classic, который выполняет токенизацию так же, как не настраиваемый токенизатор в старых версиях продукта (до 6.2). ml_classic был токенизатором категоризации по умолчанию в версиях 6.2–7.13, поэтому, если вам нужна категоризация, идентичная той, что используется по умолчанию для заданий, созданных в этих версиях, укажите "tokenizer": "ml_classic" в своем categorization_analyzer.

Начиная с Elasticsearch 8.10.0, используется новый номер версии для отслеживания изменений конфигурации и состояния в плагине машинного обучения. Этот новый номер версии не связан с версией продукта и будет увеличиваться независимо.

filter
(массив строк или объектов) Один или несколько фильтров токенов. В дополнение к встроенным фильтрам токенов другие плагины могут предоставлять дополнительные фильтры токенов. Это свойство является необязательным. Если оно не указано, перед категоризацией не применяются фильтры токенов.
categorization_field_name
(строка) Если это свойство указано, значения указанного поля будут категоризированы. Результирующие категории должны использоваться в детекторе, установив by_field_name, over_field_name или partition_field_name в ключевое слово mlcategory. Для получения дополнительной информации см. Категоризация сообщений журналов.
categorization_filters
(массив строк) Если указан categorization_field_name, вы также можете определить необязательные фильтры. Это свойство ожидает массив регулярных выражений. Выражения используются для отфильтровывания совпадающих последовательностей из значений поля категоризации. Вы можете использовать эту функцию для тонкой настройки категоризации, исключая последовательности из рассмотрения при определении категорий. Например, вы можете исключить операторы SQL, которые появляются в ваших файлах журналов. Для получения дополнительной информации см. Категоризация сообщений журналов. Это свойство не может использоваться одновременно с categorization_analyzer. Если вы хотите определить только простые фильтры регулярных выражений, которые применяются до токенизации, установка этого свойства является самым простым методом. Если вы также хотите настроить токенизатор или фильтрацию после токенизации, используйте свойство categorization_analyzer и включите фильтры как фильтры символов pattern_replace. Эффект точно такой же.
detectors

(массив) Массив объектов конфигурации детекторов. Объекты конфигурации детекторов определяют, какие поля данных анализирует задача. Они также определяют, какие аналитические функции используются. Для задачи можно указать несколько детекторов.

Если массив detectors не содержит хотя бы один детектор, анализ не может быть выполнен, и возвращается ошибка.

Свойства detectors
by_field_name
(строка) Поле, используемое для разделения данных. В частности, это свойство используется для анализа разделов относительно их собственной истории. Оно используется для поиска необычных значений в контексте раздела.
custom_rules

(массив) Массив объектов пользовательских правил, позволяющий настроить работу детекторов. Например, правило может диктовать детектору условия, при которых результаты должны быть пропущены. Kibana называет пользовательские правила правилами задач. Более подробные примеры см. на странице Настройка детекторов с помощью пользовательских правил.

Свойства custom_rules
actions

(массив) Набор действий, которые будут выполнены при применении правила. Если указано более одного действия, эффекты всех действий комбинируются. Доступные действия включают:

  • skip_result: Результат не будет создан. Это значение по умолчанию. Если также не указано skip_model_update, модель будет обновлена как обычно со соответствующим значением ряда.
  • skip_model_update: Значение для этого ряда не будет использовано для обновления модели. Если также не указано skip_result, результаты будут созданы как обычно. Это действие подходит, когда определенные значения ожидаются как аномальные и они влияют на модель таким образом, что негативно сказываются на остальной части результатов.
  • force_time_shift: Это действие сместит время внутри детектора аномалий на указанную величину. Это полезно, например, для быстрого реагирования на события перехода на летнее время, которые известны заранее. Это действие требует параметра force_time_shift в объекте params.
params

(объект) Набор параметров, настраивающих действия, определенные в массиве действий пользовательских правил. Доступные параметры (в зависимости от указанных действий) включают: force_time_shift.

Свойства params
force_time_shift
(объект) Установите time_shift_amount на числовое значение в секундах, на которое вы хотите сместить время.
conditions

(массив) Необязательный массив числовых условий, при которых правило применяется. Правило должно иметь либо непустой диапазон, либо хотя бы одно условие. Несколько условий комбинируются вместе с логическим оператором AND. Условие имеет следующие свойства:

Свойства conditions
applies_to
(строка) Указывает свойство результата, к которому применяется условие. Доступные варианты: actual, typical, diff_from_typical, time. Если ваш детектор использует функции lat_long, metric, rare или freq_rare, вы можете указать только условия, которые применяются к time.
operator
(строка) Указывает оператор условия. Доступные варианты: gt (больше), gte (больше или равно), lt (меньше) и lte (меньше или равно).
value
(двойное) Значение, которое сравнивается со значением поля applies_to, используя operator.
scope

(объект) Необязательный диапазон рядов, к которым применяется правило. Правило должно иметь либо непустой диапазон, либо хотя бы одно условие. По умолчанию диапазон включает все ряды. Диапазоны разрешены для любых полей, также указанных в by_field_name, over_field_name или partition_field_name. Чтобы добавить диапазон для поля, добавьте имя поля в качестве ключа в объект диапазона и установите его значение в объект со следующими свойствами:

Свойства scope
filter_id
(строка) Идентификатор фильтра, который будет использоваться.
filter_type
(строка) Либо include (правило применяется к значениям в фильтре), либо exclude (правило применяется к значениям, не входящим в фильтр). По умолчанию include.
detector_description
(строка) Описание детектора. Например, Low event rate.
detector_index

(целое число) Уникальный идентификатор детектора. Этот идентификатор основан на порядке детекторов в analysis_config, начиная с нуля.

Если вы укажете значение для этого свойства, оно будет проигнорировано.

exclude_frequent
(строка) Содержит одно из следующих значений: all, none, by или over. Если установлено, частые сущности исключаются из влияния на результаты аномалии. Сущности могут рассматриваться как частые со временем или частые в популяции. Если вы работаете с полями по и по, вы можете установить exclude_frequent на all для обоих полей или на by или over для конкретных полей.
field_name

(строка) Поле, используемое детектором в функции. Если вы используете функцию частоты событий, такую как count или rare, не указывайте это поле.

Поле field_name не может содержать двойные кавычки или обратные слэши.

function
(строка) Используемая функция анализа. Например, count, rare, mean, min, max и sum. Более подробная информация находится на странице Ссылка на функцию.
over_field_name
(строка) Поле, используемое для разделения данных. В частности, это свойство используется для анализа разделов относительно истории всех разделов. Оно используется для поиска необычных значений в популяции всех разделов. Более подробная информация находится на странице Выполнение анализа популяций.
partition_field_name
(строка) Поле, используемое для сегментации анализа. При использовании этого свойства для каждого значения этого поля создаются полностью независимые базовые линии.
use_null
(булево) Определяет, используется ли новый ряд в качестве нулевого ряда, когда нет значения для полей by или partition. Значение по умолчанию - false.
influencers
(массив строк) Список имен полей влиятелей, разделенных запятыми. Обычно это поля by, over или partition, используемые в конфигурации детектора. Вы также можете использовать имя поля, которое не указано конкретно в детекторе, но доступно в качестве части входных данных. При использовании нескольких детекторов рекомендуется использовать влиятелей, так как это агрегирует результаты для каждой сущности-влиятеля.
latency

(единицы измерения времени) Размер окна, в котором ожидаются данные, не соответствующие порядку времени. Значение по умолчанию равно 0 (нет задержки). Если вы укажете ненулевое значение, оно должно быть больше или равно одной секунде. Более подробная информация об единицах измерения времени находится на странице Единицы измерения времени.

Задержка применима только при отправке данных с помощью API отправки данных.

model_prune_window
(необязательно, единицы измерения времени) Дополнительный параметр конфигурации. Влияет на удаление моделей, которые не обновлялись в течение заданного промежутка времени. Значение должно быть кратно bucket_span. Если значение слишком мало, важная информация может быть удалена из модели. Обычно устанавливается на 30d или более длительный период. Если не установлено, удаление модели происходит только в том случае, если состояние памяти модели достигает мягкого или жесткого лимита. Для задач, созданных в версии 8.1 и выше, значение по умолчанию — наибольшее из значений 30d или 20 раз bucket_span.
multivariate_by_fields

(Булево) Эта функциональность зарезервирована для внутреннего использования. Она не поддерживается в средах клиентов и не подпадает под SLA поддержки официальных функций GA.

Если установлено значение true, анализ автоматически найдет корреляции между метриками для заданного значения поля by и сообщит об аномалиях, когда эти корреляции перестанут соблюдаться. Например, предположим, что использование ЦП и памяти на хосте А обычно сильно коррелирует с теми же метриками на хосте Б. Возможно, эта корреляция происходит потому, что они выполняют приложение с балансировкой нагрузки. Если вы включите этот параметр, то будут сообщаться аномалии, когда, например, использование ЦП на хосте А высокое, а значение использования ЦП на хосте Б низкое. То есть, вы увидите аномалию, когда использование ЦП хоста А необычно по сравнению с использованием ЦП хоста Б.

Для использования свойства multivariate_by_fields, вы также должны указать by_field_name в вашем детекторе.

per_partition_categorization

(Необязательный, объект) Настройки, связанные с тем, как категоризация взаимодействует с полями разбиения.

Свойства per_partition_categorization
enabled
(Булево) Для включения этой настройки, вы также должны установить свойство partition_field_name в то же значение во всех детекторах, которые используют ключевое слово mlcategory. В противном случае создание задачи завершится ошибкой.
stop_on_warn
(Булево) Этот параметр может быть установлен в значение true только если включена категоризация по разделам. Если значение true, то категоризация и последующее обнаружение аномалий останавливаются для разделов, где статус категоризации изменяется на warn. Этот параметр позволяет иметь задачу, где ожидается, что категоризация будет хорошо работать для некоторых разделов, но не для других; вы не платите за плохую категоризацию навсегда в разделах, где она работает плохо.
summary_count_field_name

(строка) Если этот параметр указан, ожидается, что данные, подаваемые в задачу, предварительно сгруппированы. Значение этого параметра — имя поля, содержащего количество исходных точек данных, которые были сгруппированы. То же самое summary_count_field_name применяется ко всем детекторам в задаче.

Свойство summary_count_field_name нельзя использовать с функцией metric.

analysis_limits

(Необязательный, объект) Можно применить ограничения на ресурсы, необходимые для хранения математических моделей в памяти. Эти ограничения являются приблизительными и могут быть установлены для каждой задачи. Они не контролируют использование памяти другими процессами, например, Elasticsearch Java процессами.

Свойства analysis_limits
categorization_examples_limit

(long) Максимальное количество примеров, хранимых на категорию в памяти и в хранилище результатов. Значение по умолчанию равно 4. Если увеличить это значение, доступно больше примеров, но потребуется больше места для хранения. Если установить это значение в 0, примеры не хранятся.

categorization_examples_limit применяется только к анализу, использующему категоризацию. Дополнительную информацию см. в Категоризация сообщений журнала.

model_memory_limit

(long или строка) Приблизительный максимальный объем ресурсов памяти, необходимых для аналитического процесса. Когда приближается этот предел, удаление данных становится более агрессивным. При превышении этого предела новые сущности не моделируются. Значение по умолчанию для задач, созданных в версии 6.1 и более поздних, равно 1024mb. Однако, если значение параметра xpack.ml.max_model_memory_limit больше, чем 0, и меньше, чем 1024mb, используется это значение. Если xpack.ml.max_model_memory_limit не задано, но задано xpack.ml.use_auto_machine_memory_percent, то значение по умолчанию model_memory_limit будет установлено в максимальный размер, который может быть назначен в кластере, с ограничением 1024mb. Значение по умолчанию относительно невелико, чтобы обеспечить, что высокое потребление ресурсов является осознанным решением. Если у вас есть задачи, которые ожидают анализа полей высокой мощности, вам, вероятно, понадобится использовать более высокое значение.

Начиная с Elasticsearch 8.10.0, для отслеживания изменений конфигурации и состояния плагина машинного обучения используется новый номер версии. Этот новый номер версии отвязан от версии продукта и будет увеличиваться независимо.

Если вы указываете число вместо строки, единицы измерения предполагаются в MiB. Для большей ясности рекомендуется указывать строку. Если вы указываете единицу измерения в байтах b или kb, и число не соответствует целому числу мегабайтов, оно округляется вниз до ближайшего MiB. Минимальное допустимое значение равно 1 MiB. Если вы укажете значение меньше 1 MiB, произойдёт ошибка. Дополнительную информацию о поддерживаемых единицах измерения размера в байтах см. в Единицы измерения размера в байтах.

Если вы укажете значение для параметра xpack.ml.max_model_memory_limit, при попытке создания задач с model_memory_limit значениями, превышающими значение этого параметра, произойдёт ошибка. Дополнительную информацию см. в Настройки машинного обучения.

background_persist_interval

(Необязательно, единицы измерения времени) Дополнительная конфигурационная опция. Время между каждой периодической сохранением модели. Значение по умолчанию — случайное значение между 3 и 4 часами, что предотвращает сохранение всех задач в одно и то же время. Наименьшее допустимое значение — 1 час.

Для очень больших моделей (несколько ГБ) сохранение может занять 10-20 минут, поэтому не устанавливайте значение background_persist_interval слишком низким.

custom_settings
(Необязательно, объект) Дополнительная конфигурационная опция. Содержит пользовательские метаданные о задаче. Например, может содержать пользовательскую информацию URL, как показано в Добавление пользовательских URL-адресов к результатам машинного обучения.
daily_model_snapshot_retention_after_days

(Необязательно, long) Дополнительная конфигурационная опция, которая влияет на автоматическое удаление старых снимков модели для этой задачи. Она указывает период времени (в днях) после которого сохраняется только первый снимок за день. Этот период относится к метке времени последнего снимка для этой задачи. Допустимые значения варьируются от 0 до model_snapshot_retention_days. Для новых задач значение по умолчанию равно 1. Для задач, созданных до версии 7.8.0, значение по умолчанию соответствует model_snapshot_retention_days. Дополнительную информацию см. в Снимки моделей.

Начиная с Elasticsearch 8.10.0, для отслеживания изменений конфигурации и состояния плагина машинного обучения используется новый номер версии. Этот новый номер версии отвязан от версии продукта и будет увеличиваться независимо.

data_description

(Обязательно, объект) Описание данных определяет формат входных данных при отправке данных в задачу с помощью API отправки данных. Обратите внимание, что при использовании datafeed, необходимо указать только time_field, остальные свойства устанавливаются автоматически. Когда данные принимаются через API отправки данных, они не хранятся в Elasticsearch. Сохраняются только результаты обнаружения аномалий.

Свойства data_description
format
(строка) В настоящее время поддерживается только формат xcontent, и это значение по умолчанию.
time_field
(строка) Имя поля, содержащего отметку времени. Значение по умолчанию — time.
time_format

(строка) Формат времени, который может быть epoch, epoch_ms или пользовательским шаблоном. Значение по умолчанию — epoch, которое относится к времени Unix или эпохе (количество секунд с 1 января 1970 года). Значение epoch_ms указывает, что время измеряется в миллисекундах с момента эпохи. Форматы времени epoch и epoch_ms принимают целые или вещественные значения.

Пользовательские шаблоны должны соответствовать классу Java DateTimeFormatter. При использовании шаблонов форматирования даты и времени рекомендуется указывать полную дату, время и часовой пояс. Например: yyyy-MM-dd'T'HH:mm:ssX. Если указанный шаблон недостаточен для создания полной метки времени, создание задачи завершится ошибкой.

datafeed_config

(Необязательный, объект) Поток данных, который извлекает данные из Elasticsearch для анализа задачей. Каждый задаче обнаружения аномалий можно связать только один поток данных.

Свойства datafeed
aggregations
(Необязательный, объект) Если задано, поток данных выполняет запросы агрегации. Поддержка агрегаций ограничена и должна использоваться только с данными малой кардинальности. Дополнительную информацию см. в разделе Агрегирование данных для повышения производительности.
chunking_config

(Необязательный, объект) Потокам данных может потребоваться поиск за длительные периоды времени, в течение нескольких месяцев или лет. Этот поиск разбивается на временные блоки, чтобы обеспечить контроль нагрузки на Elasticsearch. Настройка разбиения управляет вычислением размера этих временных блоков и представляет собой расширенную конфигурацию.

Свойства chunking_config
mode

(строка) Доступны три режима:

  • auto: Размер блока вычисляется динамически. Это значение по умолчанию и рекомендуется, когда поток данных не использует агрегации.
  • manual: Разбиение выполняется в соответствии с указанным time_span. Используйте этот режим, когда поток данных использует агрегации.
  • off: Разбиение не применяется.
time_span
(единицы времени) Временной интервал, за который будет выполняться каждый поиск. Это свойство применимо только в случае, когда режим установлен в manual. Например: 3h.
datafeed_id

(Необязательный, строка) Числовая строка, которая однозначно идентифицирует поток данных. Этот идентификатор может содержать строчные буквенно-цифровые символы (a-z и 0-9), дефисы и нижние подчеркивания. Он должен начинаться и заканчиваться буквенно-цифровыми символами.

По умолчанию используется тот же идентификатор, что и у задачи обнаружения аномалий.

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 работы в реальном времени. Если не задано, поток данных без конечной даты, который не видит данных, будет оставаться запущенным до явного остановления. По умолчанию это значение не установлено.
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.
description
(Необязательный, строка) Описание задачи.
groups
(Необязательный, массив строк) Список групп задач. Задача может принадлежать ни к одной группе или многим.
model_plot_config

(Необязательно, объект) Этот расширенный параметр конфигурации хранит информацию о модели вместе с результатами. Он обеспечивает более подробный просмотр обнаружения аномалий.

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

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

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

Свойства model_plot_config
annotations_enabled
(Булево) Если true, активирует вычисление и хранение аннотаций изменений модели для каждой анализируемой сущности. По умолчанию установлено значение enabled.
enabled
(Булево) Если true, активирует вычисление и хранение границ модели для каждой анализируемой сущности. По умолчанию это отключено.
terms
[preview] Эта функция находится в техническом предварительном просмотре и может быть изменена или удалена в будущих выпусках. Elastic будет работать над устранением любых проблем, но функции в техническом предварительном просмотре не подпадают под SLA поддержки официальных функций GA. (строка) Ограничивает сбор данных этим списком разделённых запятыми разделов или значений полей. Если термины не указаны или это пустая строка, фильтрация не применяется. Например, "CPU,NetworkIn,DiskWrites". Поддержка подстановочных знаков отсутствует. Только указанные terms могут быть просмотрены при использовании Single Metric Viewer.
model_snapshot_retention_days
(Необязательно, целое число) Расширенный параметр конфигурации, влияющий на автоматическое удаление старых снимков модели для данной задачи. Он определяет максимальный период времени (в днях), в течение которого сохраняются снимки. Этот период относится к метке времени последнего снимка для данной задачи. Значение по умолчанию — 10, что означает удаление снимков, старше десяти дней, чем самый последний снимок. Для получения дополнительной информации см. Снимки моделей.
renormalization_window_days
(Необязательно, целое число) Расширенный параметр конфигурации. Период, в течение которого применяются корректировки к оценке, по мере поступления новых данных. Значение по умолчанию — максимальное из 30 дней или 100 bucket_spans.
results_index_name
(Необязательно, строка) Строка текста, влияющая на имя индекса результатов машинного обучения. Значение по умолчанию — shared, которое генерирует индекс с именем .ml-anomalies-shared.
results_retention_days
(Необязательно, целое число) Расширенный параметр конфигурации. Период времени (в днях), в течение которого сохраняются результаты. Возраст рассчитывается относительно метки времени последнего результата корзины. Если этому свойству присвоено ненулевое значение, то один раз в день в 00:30 (по серверному времени) результаты, которые старше указанного количества дней, чем последний результат корзины, удаляются из Elasticsearch. Значение по умолчанию — null, что означает сохранение всех результатов. Аннотации, сгенерированные системой, также считаются результатами для целей хранения; они удаляются через такое же количество дней, как и результаты. Аннотации, добавленные пользователями, сохраняются навсегда.

Примеры

Создайте задачу обнаружения аномалий и источник данных:

resp = client.ml.put_job(
    job_id="test-job1",
    pretty=True,
    analysis_config={
        "bucket_span": "15m",
        "detectors": [
            {
                "detector_description": "Sum of bytes",
                "function": "sum",
                "field_name": "bytes"
            }
        ]
    },
    data_description={
        "time_field": "timestamp",
        "time_format": "epoch_ms"
    },
    analysis_limits={
        "model_memory_limit": "11MB"
    },
    model_plot_config={
        "enabled": True,
        "annotations_enabled": True
    },
    results_index_name="test-job1",
    datafeed_config={
        "indices": [
            "kibana_sample_data_logs"
        ],
        "query": {
            "bool": {
                "must": [
                    {
                        "match_all": {}
                    }
                ]
            }
        },
        "runtime_mappings": {
            "hour_of_day": {
                "type": "long",
                "script": {
                    "source": "emit(doc['timestamp'].value.getHour());"
                }
            }
        },
        "datafeed_id": "datafeed-test-job1"
    },
)
print(resp)
const response = await client.ml.putJob({
  job_id: "test-job1",
  pretty: "true",
  analysis_config: {
    bucket_span: "15m",
    detectors: [
      {
        detector_description: "Sum of bytes",
        function: "sum",
        field_name: "bytes",
      },
    ],
  },
  data_description: {
    time_field: "timestamp",
    time_format: "epoch_ms",
  },
  analysis_limits: {
    model_memory_limit: "11MB",
  },
  model_plot_config: {
    enabled: true,
    annotations_enabled: true,
  },
  results_index_name: "test-job1",
  datafeed_config: {
    indices: ["kibana_sample_data_logs"],
    query: {
      bool: {
        must: [
          {
            match_all: {},
          },
        ],
      },
    },
    runtime_mappings: {
      hour_of_day: {
        type: "long",
        script: {
          source: "emit(doc['timestamp'].value.getHour());",
        },
      },
    },
    datafeed_id: "datafeed-test-job1",
  },
});
console.log(response);
PUT _ml/anomaly_detectors/test-job1?pretty
{
  "analysis_config": {
    "bucket_span": "15m",
    "detectors": [
      {
        "detector_description": "Sum of bytes",
        "function": "sum",
        "field_name": "bytes"
      }
    ]
  },
  "data_description": {
    "time_field": "timestamp",
    "time_format": "epoch_ms"
  },
  "analysis_limits": {
    "model_memory_limit": "11MB"
  },
  "model_plot_config": {
    "enabled": true,
    "annotations_enabled": true
  },
  "results_index_name": "test-job1",
  "datafeed_config":
  {
    "indices": [
    "kibana_sample_data_logs"
    ],
    "query": {
      "bool": {
        "must": [
          {
            "match_all": {}
          }
        ]
      }
    },
    "runtime_mappings": {
      "hour_of_day": {
        "type": "long",
        "script": {
          "source": "emit(doc['timestamp'].value.getHour());"
        }
      }
    },
    "datafeed_id": "datafeed-test-job1"
  }
}

API возвращает следующие результаты:

{
  "job_id" : "test-job1",
  "job_type" : "anomaly_detector",
  "job_version" : "8.4.0",
  "create_time" : 1656087283340,
  "datafeed_config" : {
    "datafeed_id" : "datafeed-test-job1",
    "job_id" : "test-job1",
    "authorization" : {
      "roles" : [
        "superuser"
      ]
    },
    "query_delay" : "61499ms",
    "chunking_config" : {
      "mode" : "auto"
    },
    "indices_options" : {
      "expand_wildcards" : [
        "open"
      ],
      "ignore_unavailable" : false,
      "allow_no_indices" : true,
      "ignore_throttled" : true
    },
    "query" : {
      "bool" : {
        "must" : [
          {
            "match_all" : { }
          }
        ]
      }
    },
    "indices" : [
      "kibana_sample_data_logs"
    ],
    "scroll_size" : 1000,
    "delayed_data_check_config" : {
      "enabled" : true
    },
    "runtime_mappings" : {
      "hour_of_day" : {
        "type" : "long",
        "script" : {
          "source" : "emit(doc['timestamp'].value.getHour());"
        }
      }
    }
  },
  "analysis_config" : {
    "bucket_span" : "15m",
    "detectors" : [
      {
        "detector_description" : "Sum of bytes",
        "function" : "sum",
        "field_name" : "bytes",
        "detector_index" : 0
      }
    ],
    "influencers" : [ ],
    "model_prune_window" : "30d"
  },
  "analysis_limits" : {
    "model_memory_limit" : "11mb",
    "categorization_examples_limit" : 4
  },
  "data_description" : {
    "time_field" : "timestamp",
    "time_format" : "epoch_ms"
  },
  "model_plot_config" : {
    "enabled" : true,
    "annotations_enabled" : true
  },
  "model_snapshot_retention_days" : 10,
  "daily_model_snapshot_retention_after_days" : 1,
  "results_index_name" : "custom-test-job1",
  "allow_lazy_open" : false
}

© 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-put-job.html

Spec-Zone.ru

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