Как переместить каталог данных elasticsearch?

У меня есть установка Elasticsearch по умолчанию. Кажется, он хранит данные в

/var/lib/elasticsearch/elasticsearch/nodes

Итак, два вопроса:

Если я хочу переместить мои данные в другое место на одном компьютере (например, /foo/bar)

1) Какой уровень в дереве /var/lib/elasticsearch я копирую? и

2) Какова соответствующая настройка для path.data в elastisearch.yml?

Ответ 1

а. Вам нужно переместить папку elasticsearch, то есть папку, которая имеет то же имя, что и ваш cluster.name, настроенный в файле elasticsearch.yml.

В. Вам нужно изменить параметр path.data в файле elasticsearch.yml в новую папку, в которую вы переместили данные.

Итак, скажем, вы используете /var/lib/elasticsearch и хотите переместить папку данных на /foo/bar, вот что вам нужно сделать:

> mv /var/lib/elasticsearch /foo/bar

Затем в elasticsearch.yml измените path.data на:

path.data: /foo/bar

В конечном итоге ваши данные будут храниться в /foo/bar/elasticsearch вместо /var/lib/elasticsearch. Убедитесь, что процесс elasticsearch может получить доступ к вашей новой папке.

Ответ 2

Я хочу добавить раздражающую проблему, с которой я столкнулся, когда делал @Val полезное руководство. После того, как я сделал:

> mv /var/lib/elasticsearch /foo/bar

Я установил

path.data:/foo/bar

Но Elasticsearch работает неправильно. Например, пароль безопасности xpack (formarly shield) автоматически возвращается к умолчанию "changeme". А также, когда я хочу перечислять индексы, ничего не видно. Затем я установил

path.data:/foo/bar/elasticsearch/

Последний слэш в конце "elasticsearch" важен, я думаю. Возможно, я запутался, но решил мою проблему.

Ответ 3

Добавление к Val хорошего ответа...

Возможно, начиная с ES 5.6 (? не исследовал, как далеко назад это правда). Я переместил каталог данных в новое место и не смог запустить ES для запуска. Файл index_name.log показал, что ES ищет каталог данных по умолчанию (/var/lib/elasticsearch), который он не смог найти, потому что я его переместил, так что при запуске он умер. Я сделал копию перенесенного каталога обратно в /var/lib/elasticsearch и снова попытался запустить, что снова не удалось. Журнал показал, что ES действительно нашел местоположение каталога данных по умолчанию, но также обнаружил, что есть контент, поэтому запуск был неудачным. Заключительным этапом было удаление /var/lib/elasticsearch и запуск был успешным.

В заключение для ES 5.6 на RHEL (по крайней мере): 1. Должен существовать каталог по умолчанию /var/lib/elasticsearch 2. Каталог по умолчанию /var/lib/elasticsearch должен быть пустым

Ответ 4

Если вы более осторожно относитесь к перемещению критически важных данных, cp с сохранением всех атрибутов (владелец, группа, timestamp и т.д.) Может помочь.

cp -r --preserve=all /var/lib/elasticsearch/ /foo/bar/

Откройтеasticsearch.yml и установите path.data на новое место

path.data: /foo/bar/elasticsearch/

Перезапустите серверasticsearch. Теперь вы можете безопасно удалить исходные данные.

rm -rf /var/lib/elasticsearch/