Когда использовать преобразования
Агрегации Elasticsearch — мощный и гибкий инструмент, позволяющий обобщать и получать сложные сведения о данных. Вы можете подсчитать, например, количество веб-запросов в день на загруженном сайте, разбив данные по географии и типу браузера. Однако, если вам нужно вычислить что-то простое, например, среднюю продолжительность сеансов посетителей, вы быстро можете столкнуться с проблемами памяти.
Почему так происходит? Продолжительность сеанса веб-пользователя — пример поведенческого атрибута, который не хранится в каждом журнале; его нужно получить, найдя первую и последнюю записи для каждого сеанса в наших веб-логах. Это требует сложных запросов и большой памяти для объединения всех точек данных. Если у вас есть фоновый процесс, который объединяет связанные события из одного индекса в сводки, ориентированные на сущности, в другом индексе, вы получите более полезную и связную картину. Этот новый индекс иногда называется фреймом данных.
Вы можете рассмотреть использование преобразований вместо агрегаций в следующих случаях:
-
Вам нужен полный индекс функций, а не набор из N наиболее важных элементов.
В машинном обучении часто требуется полный набор поведенческих функций, а не только топ-N. Например, если вы прогнозируете отток клиентов, вы можете изучить такие функции, как количество посещений веб-сайта за последнюю неделю, общее количество продаж или количество отправленных электронных писем. Функции машинного обучения Elastic Stack создают модели на основе этого многомерного пространства функций, поэтому они выигрывают от полных индексов функций, созданных преобразованиями.
Этот сценарий также применим, когда вы пытаетесь искать результаты агрегации или нескольких агрегаций. Результаты агрегации можно упорядочить или отфильтровать, но есть ограничения на сортировку, и фильтрация с помощью агрегации bucket selector ограничена максимальным количеством возвращаемых корзин. Если вы хотите найти все результаты агрегации, вам необходимо создать полный фрейм данных. Если вам нужно отсортировать или отфильтровать результаты агрегации по нескольким полям, преобразования особенно полезны.
-
Вам нужно отсортировать результаты агрегации по результатам агрегации с помощью pipeline.
Агрегации pipeline нельзя использовать для сортировки. Технически это связано с тем, что агрегации pipeline выполняются на этапе reduction после завершения всех других агрегаций. Если вы создаёте преобразование, вы можете эффективно выполнять несколько проходов по данным.
-
Вы хотите создать сводные таблицы для оптимизации запросов.
Например, если у вас есть панель мониторинга высокого уровня, к которой обращается большое количество пользователей, и она использует сложную агрегацию по большому набору данных, может быть эффективнее создать преобразование для кэширования результатов. Таким образом, каждому пользователю не нужно запускать запрос агрегации.
© 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-usage.html