Обзор Rollup
Устаревшее с версии 8.11.0.
Функция Rollups будет удалена в будущей версии. Пожалуйста, перейдите на downsampling вместо этого.
Данные, основанные на времени (документы, которые в основном идентифицируются по метке времени), часто имеют связанные политики хранения, чтобы управлять ростом данных. Например, ваша система может генерировать 500 документов каждую секунду. Это будет генерировать 43 миллиона документов в день и почти 16 миллиардов документов в год.
Хотя ваши аналитики и специалисты по данным могут пожелать хранить эти данные неограниченно долго для анализа, время не имеет конца, и поэтому ваши потребности в хранилище будут неуклонно расти. Поэтому политики хранения часто диктуются простым расчетом затрат на хранение с течением времени и тем, что организация готова платить за хранение исторических данных. Часто эти политики начинают удалять данные через несколько месяцев или лет.
Затраты на хранение являются фиксированной величиной. Для хранения Y данных требуется X денег. Но полезность данных часто меняется со временем. Данные датчиков, собранные с временной меткой в миллисекунды, очень полезны прямо сейчас, достаточно полезны, если они из нескольких недель назад, и лишь незначительно полезны, если им более нескольких месяцев.
Таким образом, хотя стоимость хранения миллисекунды данных датчиков десятилетней давности фиксирована, ценность отдельного показания датчика часто уменьшается со временем. Это не бесполезно — это может легко внести вклад в полезный анализ — но уменьшение ценности часто приводит к удалению, а не к оплате фиксированных затрат на хранение.
Rollup хранит исторические данные с уменьшенной детализацией
Вот где пригождается Rollup. Функция Rollup обобщает старые данные с высокой детализацией в формат с меньшей детализацией для долгосрочного хранения. Сводя данные в один сводный документ, исторические данные можно значительно сжать по сравнению с исходными данными.
Например, рассмотрим систему, которая генерирует 43 миллиона документов каждый день. Данные со значениями по секундам полезны для анализа в реальном времени, но исторический анализ, охватывающий десять лет данных, вероятно, будет работать с более крупным интервалом, например, с часовыми или суточными трендами.
Если мы сжимаем 43 миллиона документов в сводки по часам, мы можем сэкономить огромное количество места. Функция Rollup автоматизирует этот процесс обобщения исторических данных.
Подробная информация о настройке и конфигурации Rollup содержится в API создания задач.
Rollup использует стандартный Query DSL
Функция Rollup предоставляет новый конечный пункт поиска (/_rollup_search по сравнению со стандартным /_search), который знает, как искать по сводным данным. Важно, что этот конечный пункт принимает 100% обычный Elasticsearch Query DSL. Вашему приложению не нужно изучать новый DSL для проверки исторических данных, оно может просто повторно использовать существующие запросы и панели.
Существуют некоторые ограничения функциональности; не все запросы и агрегации поддерживаются, некоторые функции поиска (выделение и т. д.) отключены, а доступные поля зависят от того, как была настроена сводка. Эти ограничения более подробно описаны в ограничениях поиска Rollup.
Но если ваши запросы, агрегации и панели используют только доступную функциональность, перенаправление их на исторические данные является тривиальной задачей.
Rollup объединяет «живые» и «сводные» данные
Полезной функцией Rollup является возможность запросить как «живые» данные в режиме реального времени, так и исторические «сводные» данные в одном запросе.
Например, ваша система может хранить один месяц сырых данных. Через месяц она сводится в исторические сводные данные с использованием Rollup, а сырые данные удаляются.
Если вы запросите сырые данные, вы увидите только самые последние данные месяца. А если вы запросите сводные данные, вы увидите только данные, которые старше месяца. Однако конечный пункт RollupSearch поддерживает одновременный запрос обоих типов данных. Он возьмет результаты из обоих источников данных и объединит их. Если есть перекрытие между «живыми» и «сводными» данными, «живые» данные имеют приоритет для повышения точности.
Rollup поддерживает многоинтервальное представление
Наконец, Rollup умеет разумно использовать лучший доступный интервал. Если вы работали с функциями сводки других продуктов, вы обнаружите, что они могут быть ограничены. Если вы настраиваете сводки с интервалом в день… ваши запросы и графики могут работать только с суточными интервалами. Если вам нужен месячный интервал, вам нужно создать другую сводку, которая явно сохраняет месячные средние значения и т. д.
Функция Rollup хранит данные таким образом, что запросы могут определить наименьший доступный интервал и использовать его для обработки. Если вы храните сводки с ежедневным интервалом, запросы могут выполняться с ежедневными или более длительными интервалами (еженедельные, ежемесячные и т. д.) без необходимости явного конфигурирования новой задачи сводки. Это помогает устранить один из основных недостатков системы сводки; уменьшение гибкости по сравнению с сырыми данными.
© 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/rollup-overview.html