Necesito cambiar el nombre de varios índices en un clúster (su nombre debe cambiarse, no puedo usar alias ).
Vi que no hay formas compatibles de hacer eso, lo más cercano que encontré es cambiar el nombre del directorio del índice , probé esto en un clúster.
El clúster tiene 3 máquinas A
, B
y C
y los fragmentos se replican en cada uno de ellos. Apago el elasticsearch A
, rebautizado /var/lib/elasticsearch/security/nodes/0/indices/oldindexname
a /var/lib/elasticsearch/security/nodes/0/indices/newindexname
y reiniciado A
.
El estado del clúster era amarillo y elasticsearch estaba haciendo algo de magia para restaurar un estado correcto. Después de un tiempo terminé con
oldindexname
estar disponible y completamente replicado (recuperado deB
yC
supongo)newindexname
estando disponible (puedo buscarlo) pero el complemento principal muestra que sus fragmentos están en un estado "Sin asignar" y que están atenuados (no replicados)
Durante la recuperación security.log
mostró el siguiente mensaje:
[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
Si bien newindexname
se puede buscar, ciertamente no se encuentra en un estado normal.
Volví al estado anterior eliminando newindexname
. El clúster vuelve a ponerse verde sin ninguna entrada "No asignada".
Dado eso, ¿cómo puedo cambiar el nombre oldindexname
a newindexname
en un clúster?
Nota: la solución definitiva que tengo en mente es al desplazamiento de copias oldindex
en newindex
y eliminar oldindex
después. Esto llevará tiempo, así que si hay una solución más directa, sería genial.