Резервное копирование, удаление, восстановление индексов Elasticsearch по папкам индексов
Большая часть документации ElasticSearch посвящена работе с индексами через REST API - есть ли причина, по которой я не могу просто переместить или удалить папки индекса с диска?
2 ответа
Вы можете перемещать данные на диске, в точку -
Если Elasticsearch запущен, никогда не рекомендуется перемещать или удалять папки индекса, потому что Elasticsearch не будет знать, что случилось с данными, и вы получите все виды FileNotFoundExceptions
в журналах, а также красные индексы, пока вы не удалите их вручную.
Если Elasticsearch не запущен, вы можете переместить папки индекса на другой узел (например, если вы постоянно выводили из строя узел и нуждались в удалении данных), однако, если удалите или переместите папку в место, где Elasticsearch не может увидеть это когда сервис перезапускается, тогда Elasticsearch будет недоволен. Это связано с тем, что Elasticsearch записывает то, что известно как состояние кластера, на диск, и в этом состоянии кластера индексы записываются, поэтому, если ES запускается и ожидает найти индекс "foo", но вы удалили каталог индекса "foo", индекс будет оставаться в красном состоянии, пока не будет удален через REST API.
В связи с этим я бы порекомендовал вам, если вы хотите переместить или удалить отдельные индексные папки с диска, по возможности использовать REST API, так как можно перевести ES в несчастное состояние, если вы удалите папку, которую он ожидает найти. индекс в.
РЕДАКТИРОВАТЬ: я должен отметить, что безопасно (для резервных копий) скопировать папку индексов, с точки зрения Elasticsearch, потому что она не изменяет содержимое папки. Иногда люди делают это для резервного копирования вне API моментальных снимков и восстановления.
Я использую эту процедуру: я закрываю, делаю резервную копию, затем удаляю индексы.
curl -XPOST "http://127.0.0.1:9200/*index_name*/_close"
После этой точки все данные индекса находятся на диске и находятся в согласованном состоянии, и запись невозможна. Я копирую каталог, в котором хранится индекс, а затем удаляю его:
curl -XPOST "http://127.0.0.1:9200/*index_name*/_delete"
Закрывая индекс,asticsearch прекращает весь доступ к индексу. Затем я посылаю команду на удаление индекса (и всех соответствующих файлов на диске).