Резервное копирование, удаление, восстановление индексов 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 останавливает весь доступ к индексу. Затем я отправляю команду на удаление индекса (и всех соответствующих файлов на диске).