Мне нужно переименовать несколько индексов в кластере (их имя нужно изменить, я не могу использовать псевдонимы ).
Я увидел, что для этого нет поддерживаемых способов, самое близкое, что я нашел, - это переименовать каталог индекса , я пробовал это в кластере.
В кластере 3 машины A
, B
и C
на каждой из них реплицируются шарды. Я выключил elasticsearch A
, переименовал /var/lib/elasticsearch/security/nodes/0/indices/oldindexname
в /var/lib/elasticsearch/security/nodes/0/indices/newindexname
и перезапустил A
.
Состояние кластера было желтым, и elasticsearch творил чудеса, чтобы восстановить правильное состояние. Через некоторое время я оказался
oldindexname
быть доступным и полностью реплицированным (восстановлено,B
иC
я думаю)newindexname
доступны (я могу выполнить поиск), но плагин head показывает, что его шарды находятся в состоянии «Неназначено» и что они неактивны (не реплицируются)
Во время восстановления security.log
показывал следующее сообщение:
[2015-02-20 11:02:33,461][INFO ][gateway.local.state.meta ] [A.example.com] dangled index directory name is [newindexname], state name is [oldindexname], renaming to directory name
Хотя newindexname
он доступен для поиска, он определенно не находится в нормальном состоянии.
Откатился в предыдущее состояние, удалив newindexname
. Кластер снова становится зеленым без каких-либо записей «Неназначенные».
Учитывая , что, как я могу переименовать , oldindexname
чтобы newindexname
в кластере?
Примечание: окончательное решение , которое я имею в виду , чтобы свитка копию oldindex
в newindex
и удалить oldindex
впоследствии. На это потребуется время, поэтому, если есть более прямое решение, было бы здорово.