Резервное копирование, удаление, восстановление индексов Elasticsearch по папкам индексов

в большинстве документов ElasticSearch обсуждается работа с индексами через REST API - есть ли причина, по которой я не могу просто перемещать или удалять папки индексов с диска?

2 ответов


вы можете перемещать данные по диску, в точку -

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

Если Elasticsearch не запущен, можно переместить папки индекса на другой узел (для например, если вы были decomissioning узел навсегда и нужен данных), однако, если удалить или переместить папку в место, где Elasticsearch не может видеть его при перезапуске службы, а затем Elasticsearch будет несчастлив. Это связано с тем, что Elasticsearch пишет то, что известно как состояние кластера на диск, и в этом состоянии кластера индексы записываются, так что если ES запускается и ожидает найти индекс "foo", но вы удалили " foo" каталог индекса, индекс будет оставаться в красном состоянии, пока он не будет удален через остальной ПРИКЛАДНОЙ ПРОГРАММНЫЙ ИНТЕРФЕЙС.

из-за этого, я бы рекомендовал, если вы хотите переместить или удалить отдельные индексируйте папки с диска, которые вы используете REST API, когда это возможно можно получить ES в несчастливое состояние, если удалить папку, которую он ожидает чтобы найти индекс.

EDIT: я должен упомянуть, что безопасно копировать (для резервных копий) папку индексов, с точки зрения Elasticsearch, поскольку он не изменяет содержимое папка. Иногда люди делают это резервное копирование вне моментального снимка & API восстановления.


Я использую эту процедуру: я закрываю, резервное копирование, а затем удаляю индексы.

curl -XPOST "http://127.0.0.1:9200/*index_name*/_close"

после этого момента все данные индекса находятся на диске и в согласованном состоянии, и записи невозможны. Я копирую каталог, в котором хранится индекс, а затем удаляю его:

curl -XPOST "http://127.0.0.1:9200/*index_name*/_delete"

закрыв индекс, elasticsearch останавливает весь доступ к индексу. Затем я отправляю команду на удаление индекса (и всех соответствующих файлов на диске).