J'ai besoin de renommer plusieurs index dans un cluster (leur nom doit être changé, je ne peux pas utiliser d' alias ).
J'ai vu qu'il n'y avait pas de moyens pris en charge pour le faire, le plus proche que j'ai trouvé est de renommer le répertoire de l'index , j'ai essayé cela dans un cluster.
Le groupe dispose de 3 machines A
, B
et C
et les tessons sont répliquées sur chacun d'eux. J'ARRÊTER ElasticSearch sur A
, renommé /var/lib/elasticsearch/security/nodes/0/indices/oldindexname
pour /var/lib/elasticsearch/security/nodes/0/indices/newindexname
et redémarré A
.
L'état du cluster était jaune et elasticsearch faisait de la magie pour restaurer un état correct. Après un certain temps, je me suis retrouvé avec
oldindexname
être disponible et entièrement répliqué (récupéré deB
etC
je suppose)newindexname
étant disponible (je peux le rechercher) mais le plugin head montre que ses fragments sont dans un état "Non attribué" et qu'ils sont grisés (non répliqués)
Pendant la récupération, security.log
le message suivant a été affiché:
[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
Bien qu'il newindexname
soit consultable, il n'est certainement pas dans un état normal.
Je suis revenu à l'état précédent en supprimant newindexname
. Le cluster est revenu au vert sans aucune entrée «Non attribué».
Étant donné que, comment puis - je renommer oldindexname
à newindexname
un cluster?
Remarque: la solution ultime je pense est de défilement copie oldindex
dans newindex
et supprimer par la oldindex
suite. Cela va prendre du temps, donc s'il y a une solution plus directe, ce serait formidable.