Жизненный цикл потока данных
Жизненный цикл потока данных — встроенный механизм, который потоки данных используют для управления своим жизненным циклом. Он позволяет легко автоматизировать управление потоками данных в соответствии с вашими требованиями к удержанию данных. Например, вы можете настроить жизненный цикл для:
- Обеспечения того, что данные, индексированные в потоке данных, будут храниться не менее указанного вами времени удержания.
- Обеспечения того, что данные, старше указанного периода удержания, будут автоматически удалены Elasticsearch в более позднее время.
Для этого он поддерживает:
- Автоматический rollover, который разбивает ваши входящие данные на более мелкие части для повышения производительности и обеспечения обратной совместимости изменений схемы.
- Настраиваемое удержание, которое позволяет настроить период времени, в течение которого гарантируется хранение ваших данных. Elasticsearch может удалить данные, старше этого периода, в более позднее время. Удержание можно настроить на уровне потока данных или на глобальном уровне. Подробнее об этих вариантах можно узнать в этом пособии.
Жизненный цикл потока данных также поддерживает уменьшение размера выборки данных из индексов, используемых в качестве источника потока данных. Подробности см. в примере уменьшения размера выборки.
Как это работает?
Через интервалы, заданные параметром data_streams.lifecycle.poll_interval, Elasticsearch проверяет каждый поток данных и выполняет следующие шаги:
- Проверяет, настроен ли для потока данных жизненный цикл, пропуская любые индексы, не являющиеся частью управляемого потока данных.
- Производит rollover для индекса записи потока данных, если он удовлетворяет условиям, определённым в
cluster.lifecycle.default.rollover. - После того, как индекс перестал быть индексом записи (то есть поток данных был подвергнут rollover), автоматически выполняет слияние tail в индексе. Жизненный цикл потока данных выполняет операцию слияния, которая затрагивает только хвост небольших сегментов, а не весь фрагмент. Поскольку сегменты организованы в уровни экспоненциальных размеров, слияние хвоста небольших сегментов стоит лишь доли стоимости принудительного слияния в один сегмент. Малые сегменты обычно содержат самые последние данные, поэтому слияние хвоста сосредоточит ресурсы слияния на данных с более высокой ценностью, которые, скорее всего, будут продолжать использоваться в запросах.
- Если настроен параметр downsampling, он выполнит все заданные этапы уменьшения размера выборки.
- Применяет удержание к оставшимся индексам-источникам. Это означает удаление индексов-источников, период хранения которых
generation_timeпревышает эффективный период удержания (подробнее о расчете эффективного периода удержания).generation_timeприменяется только к индексам-источникам, которые прошли rollover, и представляет собой время с момента rollover индекса-источника или время, необязательно настроенное вindex.lifecycle.origination_dateпараметре.
Мы используем generation_time вместо времени создания, чтобы гарантировать, что все данные в индексе-источнике прошли период удержания. В результате, период удержания не является точным временем удаления данных, а минимальным временем хранения данных.
Шаги 2-4 применяются только к индексам-источникам, которые еще не управляются ILM, что означает, что у этих индексов либо нет политики ILM, либо, если она есть, значение index.lifecycle.prefer_ilm установлено в false.
Настройка жизненного цикла потока данных
Поскольку жизненный цикл настроен на уровне потока данных, процесс настройки жизненного цикла для нового и существующего потока данных различается.
В следующих разделах мы рассмотрим следующие пособия:
- Для создания нового потока данных с жизненным циклом необходимо добавить жизненный цикл потока данных в шаблон индекса, соответствующий имени вашего потока данных (см. Пособие: Создание потока данных с жизненным циклом). Когда Elasticsearch получит операцию записи с именем вашего потока данных, поток данных будет создан с соответствующим жизненным циклом.
- Для обновления жизненного цикла существующего потока данных необходимо использовать API жизненного цикла потока данных для редактирования жизненного цикла самого потока данных (см. Пособие: Обновление существующего потока данных).
- Миграция существующего управляемого ILM потока данных в жизненный цикл потока данных с помощью Пособия: Миграция управляемого ILM потока данных в жизненный цикл потока данных.
Обновление жизненного цикла потока данных существующего потока данных отличается от обновления настроек или схемы, так как оно применяется на уровне потока данных, а не на уровне отдельных индексов-источников.
© 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/data-stream-lifecycle.html