Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Guide [8.17] ›Модули индексов

Сохранение истории

Elasticsearch иногда необходимо воспроизвести некоторые операции, выполненные на фрагменте. Например, если реплика кратковременно была недоступна, гораздо эффективнее воспроизвести несколько пропущенных операций, чем восстанавливать ее с нуля. Аналогично, репликация между кластерами работает путем выполнения операций в лидере и последующего воспроизведения этих операций в ведомом кластере.

На уровне Lucene Elasticsearch выполняет только две операции записи в индекс: добавление нового документа или удаление существующего. Обновления реализуются атомарным удалением старого документа и последующим добавлением нового. Документ, добавленный в Lucene, уже содержит всю необходимую информацию для воспроизведения операции добавления, но это не относится к удалению документов. Для решения этой проблемы Elasticsearch использует функцию «мягких удалений», чтобы сохранить последние удаленные документы в индексе Lucene для последующего воспроизведения.

Elasticsearch сохраняет только определенные недавно удаленные документы в индексе, потому что мягко удаленный документ всё ещё занимает некоторое место. В конечном итоге Elasticsearch полностью удалит эти мягко удаленные документы, чтобы освободить место, чтобы индекс не увеличивался со временем. К счастью, Elasticsearch не обязан воспроизводить каждую операцию, когда-либо выполненную на фрагменте, потому что всегда можно создать полную копию фрагмента на удалённом узле. Однако копирование всего фрагмента может занять гораздо больше времени, чем воспроизведение нескольких пропущенных операций, поэтому Elasticsearch пытается сохранить все операции, которые, как ожидается, понадобятся для воспроизведения в будущем.

Elasticsearch отслеживает операции, которые, как ожидается, понадобятся для воспроизведения в будущем, используя механизм, называемый «арендами сохранения истории фрагментов». Каждый фрагмент, для которого могут потребоваться операции воспроизведения, должен сначала создать аренды сохранения истории для себя. Например, этот фрагмент может быть репликой фрагмента или фрагментом ведомого индекса при использовании репликации между кластерами. Каждая аренда отслеживает порядковый номер первой операции, которой соответствующий фрагмент не получил. По мере получения новых операций фрагмент увеличивает порядковый номер в своей аренде, чтобы указать, что ему не потребуется воспроизводить эти операции в будущем. Elasticsearch удаляет мягко удалённые операции, когда они больше не удерживаются никакой арендой.

Если фрагмент выходит из строя, он перестаёт обновлять свою аренду сохранения истории фрагмента, что означает, что Elasticsearch сохранит все новые операции, чтобы они могли быть воспроизведены при восстановлении вышедшего из строя фрагмента. Однако аренды сохранения действуют ограниченное время. Если фрагмент не восстановится достаточно быстро, его аренда может истечь. Это защищает Elasticsearch от вечного хранения истории, если фрагмент вышел из строя навсегда, потому что после истечения аренды Elasticsearch может начать снова удалять историю. Если фрагмент восстановится после истечения срока действия аренды, Elasticsearch перейдёт к копированию всего индекса, так как он больше не может просто воспроизвести пропущенную историю. Время истечения аренды по умолчанию составляет 12h, что должно быть достаточно для большинства разумных сценариев восстановления.

Настройки сохранения истории

index.soft_deletes.enabled
[7.6.0] Устарело в 7.6.0. Создание индексов с отключёнными мягкими удалениями устарело и будет удалено в будущих версиях Elasticsearch. Указывает, включены ли мягкие удаления в индексе. Мягкие удаления можно настроить только при создании индекса и только для индексов, созданных с Elasticsearch 6.5.0 или более поздней версии. Значение по умолчанию true.
index.soft_deletes.retention_lease.period
Максимальный срок хранения аренды сохранения истории фрагмента перед её истечением. Аренды сохранения истории фрагментов обеспечивают сохранение мягких удалений во время слияний в индексе Lucene. Если мягкое удаление сливается до того, как оно может быть реплицировано на ведомого, следующий процесс завершится ошибкой из-за неполной истории в лидере. Значение по умолчанию 12h.

© 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/index-modules-history-retention.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API