Обзор преобразований
Для преобразования данных можно выбрать один из следующих методов: pivot или latest.
- Все преобразования оставляют исходный индекс без изменений. Они создают новый индекс, предназначенный для преобразованных данных.
- Преобразования могут иметь больше параметров конфигурации, предоставляемых API, чем параметры, доступные в Kibana. Для всех параметров конфигурации преобразований см. документацию API.
Преобразования являются постоянными задачами; они хранятся в состоянии кластера, что делает их устойчивыми к сбоям узлов. Дополнительную информацию о механизмах работы преобразований см. в разделах Как работают контрольные точки и Обработка ошибок.
Преобразования pivot
Вы можете использовать преобразования для сопоставления данных в новый индекс, ориентированный на сущности. Преобразуя и обобщая данные, становится возможным визуализировать и анализировать их альтернативными и интересными способами.
Многие индексы Elasticsearch организованы как поток событий: каждое событие представляет собой отдельный документ, например, отдельная покупка товара. Преобразования позволяют обобщить эти данные, представив их в упорядоченном, более подходящем для анализа формате. Например, вы можете обобщить все покупки одного клиента.
Преобразования позволяют определить pivot — набор функций, которые преобразуют индекс в другой, более удобный для восприятия формат. Сопоставление приводит к обобщению данных в новом индексе.
Для определения pivot сначала выберите одно или несколько полей, которые будут использоваться для группировки данных. Вы можете выбрать категориальные поля (термы) и числовые поля для группировки. Если вы используете числовые поля, значения полей разбиваются на интервалы, которые вы указываете.
На втором шаге вы определяете, как вы хотите агрегировать сгруппированные данные. При использовании агрегаций вы фактически задаёте вопросы об индексе. Существуют разные типы агрегаций, каждый со своим назначением и выводом. Дополнительную информацию о поддерживаемых агрегациях и полях группировки см. в разделе Создание преобразования.
В качестве необязательного шага вы также можете добавить запрос, чтобы дополнительно ограничить область применения агрегации.
Преобразование выполняет составную агрегацию, которая постранично проходит через все данные, определенные запросом к исходному индексу. Результат агрегации сохраняется в индексе назначения. Каждый раз, когда преобразование запрашивает исходный индекс, оно создаёт контрольную точку. Вы можете решить, хотите ли вы, чтобы преобразование выполнялось один раз или непрерывно. Партийное преобразование — это одиночная операция с одной контрольной точкой. Непрерывные преобразования постоянно увеличивают и обрабатывают контрольные точки по мере поступления новых данных в исходный индекс.
Представьте, что вы управляете интернет-магазином одежды. Каждый заказ создаёт документ, содержащий уникальный идентификатор заказа, название и категорию заказанного товара, его цену, количество заказанного товара, точную дату заказа и информацию о клиенте (имя, пол, местоположение и т. д.). Ваш набор данных содержит все транзакции за последний год.
Если вы хотите проверить продажи в разных категориях в последнем финансовом году, определите преобразование, которое группирует данные по категориям товаров (женская обувь, мужская одежда и т. д.) и дате заказа. Используйте прошлый год в качестве интервала для даты заказа. Затем добавьте агрегацию суммы по количеству заказанных товаров. Результатом является индекс, ориентированный на сущности, который показывает количество проданных товаров в каждой категории товаров за последний год.
Преобразования latest
Вы можете использовать преобразование типа latest для копирования последних документов в новый индекс. Вы должны определить одно или несколько полей в качестве уникального ключа для группировки данных, а также поле даты для сортировки данных в хронологическом порядке. Например, вы можете использовать этот тип преобразования для отслеживания последней покупки для каждого клиента или последнего события для каждого узла.
Как и в случае с преобразованием pivot, преобразование latest может выполняться один раз или непрерывно. Оно выполняет составную агрегацию данных в исходном индексе и сохраняет вывод в индексе назначения. Если преобразование выполняется непрерывно, новые уникальные значения ключей автоматически добавляются в индекс назначения, а самые последние документы для существующих значений ключей автоматически обновляются в каждой контрольной точке.
Соображения по производительности
Преобразования выполняют агрегации поиска по исходным индексам, а затем индексируют результаты в индекс назначения. Поэтому преобразование никогда не занимает меньше времени или не использует меньше ресурсов, чем процессы агрегации и индексирования.
Если преобразованию необходимо обработать большое количество исторических данных, то его первоначальное использование ресурсов будет высоким, особенно во время первой контрольной точки.
Для повышения производительности убедитесь, что ваши агрегации и запросы поиска оптимизированы, и что ваше преобразование обрабатывает только необходимые данные. Подумайте, можете ли вы применить запрос к исходному индексу к преобразованию, чтобы уменьшить объём обрабатываемых данных. Также рассмотрите, достаточно ли ресурсов у кластера для поддержки как составной агрегации поиска, так и индексирования её результатов.
Если вы предпочитаете распределить воздействие на свой кластер (в ущерб более медленному преобразованию), вы можете ограничить скорость выполнения запросов поиска и индексирования. Установите ограничение docs_per_second при создании или обновлении преобразования. Если вы хотите рассчитать текущую скорость, используйте следующую информацию из API получения статистики преобразований:
documents_processed / search_time_in_ms * 1000
© 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/transform-overview.html