Elasticsearch - версия документа, общие проблемы и многое другое

Версия соответствует встроенной в Elasticsearch системе отслеживания, которая отслеживает изменения при обновлении каждого документа. Когда документ индексируется в первый раз, ему присваивается версия 1 с помощью ключа _version. При последующих обновлениях этого же документа версия _version увеличивается на 1 при каждом вызове API-индекса, обновлении или удалении.

Для чего используется

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

Примечания

С помощью _version нельзя просмотреть историю документа. Это означает, что Elasticsearch не использует _version для отслеживания первоначальных изменений, которые были произведены в документе. Например, если документ обновлялся 10 раз, то его _version будет отмечена Elasticsearch как 11, но вы не сможете вернуться назад и посмотреть, как выглядела 5-я версия документа. Это необходимо реализовать самостоятельно.

Общие проблемы

Если при обновлении документа не реализована оптимистическая блокировка, Elasticsearch может вернуть ошибку конфликта с кодом состояния 409, означающую, что несколько пользователей одновременно пытаются обновить одну и ту же версию документа.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий