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