Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Guide [8.17] ›ES|QL ›ES|QL справочник

Обогащение данных

Команда обработки ES|QL ENRICH объединяет данные из одного или нескольких исходных индексов с комбинациями значений полей, найденными в обогащённых индексах Elasticsearch.

Например, вы можете использовать ENRICH для:

  • Определения веб-сервисов или поставщиков на основе известных IP-адресов
  • Добавления информации о продукте к розничным заказам на основе идентификаторов продуктов
  • Дополнения контактной информации на основе адреса электронной почты

Как работает команда ENRICH

Команда ENRICH добавляет новые столбцы в таблицу с данными из индексов Elasticsearch. Для этого требуются несколько специальных компонентов:

esql enrich
Политика обогащения

Набор параметров конфигурации, используемых для добавления необходимых данных обогащения в входную таблицу.

Политика обогащения содержит:

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

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

Исходный индекс
Индекс, в котором хранятся данные обогащения, которые команда ENRICH может добавить к входным таблицам. Вы можете создавать и управлять этими индексами так же, как и обычным индексом Elasticsearch. В политике обогащения можно использовать несколько исходных индексов. Также вы можете использовать один и тот же исходный индекс в нескольких политиках обогащения.
Индекс обогащения

Специальный системный индекс, связанный с конкретной политикой обогащения.

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

Индексы обогащения содержат данные обогащения из исходных индексов, но имеют несколько специальных свойств, помогающих их оптимизировать:

  • Это системные индексы, что означает, что они управляются внутри Elasticsearch и предназначены только для использования с процессорами обогащения и командой ES|QL ENRICH.
  • Они всегда начинаются с .enrich-*.
  • Они являются только для чтения, что означает, что вы не можете их напрямую изменять.
  • Они сливаются принудительно для быстрого извлечения.

Настройка политики обогащения

Для начала использования ENRICH, выполните следующие шаги:

  1. Проверьте предварительные условия.
  2. Добавьте данные обогащения.
  3. Создайте политику обогащения.
  4. Выполните политику обогащения.
  5. Используйте политику обогащения

После настройки политик обогащения, вы можете обновить свои данные обогащения и обновить свои политики обогащения.

Команда ENRICH выполняет несколько операций и может повлиять на скорость запроса.

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

Для использования политик обогащения у вас должны быть:

  • Права доступа к индексу read для всех используемых индексов
  • Встроенная роль enrich_user встроенная роль

Добавление данных обогащения

Для начала добавьте документы в один или несколько исходных индексов. Эти документы должны содержать данные обогащения, которые вы в конечном итоге хотите добавить к поступающим данным.

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

Также можно настроить Beats, такие как Filebeat, для автоматической отправки и индексирования документов в ваши исходные индексы. Смотрите Начало работы с Beats.

Создание политики обогащения

После добавления данных обогащения в ваши исходные индексы, используйте API создания политики обогащения или Управление индексами в Kibana для создания политики обогащения.

После создания политику обогащения нельзя обновлять или изменять. Смотрите Обновление политики обогащения.

Выполнение политики обогащения

После создания политики обогащения, вам необходимо выполнить её с помощью API выполнения политики обогащения или Управление индексами в Kibana для создания индекса обогащения.

esql enrich policy

Индекс обогащения содержит документы из исходных индексов политики. Индексы обогащения всегда начинаются с .enrich-*, являются только для чтения и сливаются принудительно.

Индексы обогащения должны использоваться только процессором обогащения или командой ES|QL ENRICH. Избегайте использования индексов обогащения для других целей.

Использование политики обогащения

После выполнения политики вы можете использовать ENRICH команду для обогащения данных.

esql enrich command

Следующий пример использует политику обогащения languages_policy для добавления нового столбца для каждого поля обогащения, определённого в политике. Сопоставление выполняется с использованием match_field, определённого в политике обогащения, и требует, чтобы входная таблица имела столбец с таким же именем (language_code в этом примере). ENRICH будет искать записи в индексе обогащения на основе значения поля сопоставления.

ROW language_code = "1"
| ENRICH languages_policy
language_code:keyword language_name:keyword

1

English

Для использования столбца с другим именем, чем match_field, определённое в политике как поле сопоставления, используйте ON <column-name>:

ROW a = "1"
| ENRICH languages_policy ON a
a:keyword language_name:keyword

1

English

По умолчанию каждое из полей обогащения, определённых в политике, добавляется как столбец. Для явного выбора полей обогащения, которые нужно добавить, используйте WITH <field1>, <field2>, ...:

ROW a = "1"
| ENRICH languages_policy ON a WITH language_name
a:keyword language_name:keyword

1

English

Можно переименовать добавленные столбцы, используя WITH new_name=<field1>:

ROW a = "1"
| ENRICH languages_policy ON a WITH name = language_name
a:keyword name:keyword

1

English

В случае коллизий имён, вновь созданные столбцы переопределят существующие.

Обновить индекс обогащения

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

Обновить политику обогащения

После создания вы не можете обновлять или изменять политику обогащения. Вместо этого вы можете:

  1. Создать и выполнить новую политику обогащения.
  2. Заменить предыдущую политику обогащения новой политикой во всех используемых процессорах обогащения или запросах ES|QL.
  3. Используйте API удаления политики обогащения или Управление индексами в Kibana для удаления предыдущей политики обогащения.

Типы и ограничения политик обогащения

Команда ES|QL ENRICH поддерживает все три типа политик обогащения:

geo_match
Сопоставляет данные обогащения с поступающими документами на основе geo_shape запроса. Пример см. в Примере: Обогащение данных на основе геолокации.
match
Сопоставляет данные обогащения с поступающими документами на основе term запроса. Пример см. в Примере: Обогащение данных на основе точных значений.
range
Сопоставляет число, дату или IP-адрес в поступающих документах с диапазоном в индексе обогащения на основе term запроса. Пример см. в Примере: Обогащение данных путем сопоставления значения с диапазоном.

Хотя все три типа политик обогащения поддерживаются, следует учитывать некоторые ограничения:

  • Тип политики обогащения geo_match поддерживает только пространственное отношение intersects.
  • Требуется, чтобы match_field в команде ENRICH был правильного типа. Например, если политика обогащения имеет тип geo_match, то match_field в команде ENRICH должна быть типа geo_point или geo_shape. Аналогично, политика обогащения типа range требует match_field типа integer, long, date или ip, в зависимости от типа поля диапазона в исходном индексе обогащения.
  • Однако это ограничение смягчается для политик range, когда match_field имеет тип KEYWORD. В этом случае значения поля будут анализироваться во время выполнения запроса, строка за строкой. Если какое-либо значение не удастся проанализировать, выходные значения для этой строки будут установлены в null, будет выведено соответствующее предупреждение, и запрос продолжит выполняться.

© 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/esql-enrich-data.html

Spec-Zone.ru

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