Preciso renomear vários índices em um cluster (seus nomes devem ser alterados, não posso usar aliases ).
Vi que não há formas suportadas de fazer isso, o mais próximo que encontrei é renomear o diretório do índice , tentei em um cluster.
O aglomerado tem 3 máquinas A, Be Ce os fragmentos são replicados em cada um deles. Desliguei o elasticsearch em A, renomeei /var/lib/elasticsearch/security/nodes/0/indices/oldindexnamepara /var/lib/elasticsearch/security/nodes/0/indices/newindexnamee reiniciei A.
O estado do cluster era amarelo e a elasticsearch estava fazendo mágica para restaurar um estado correto. Depois de algum tempo acabei com
oldindexnameestando disponível e totalmente replicado (recuperado deBeCeu acho)newindexnameestando disponível (posso pesquisá-lo), mas o plug-in principal mostra que seus fragmentos estão em um estado "Não atribuído" e que estão acinzentados (não replicados)
Durante a recuperação security.logmostrou a seguinte mensagem:
[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
Embora newindexnameseja pesquisável, certamente não está em um estado normal.
Eu voltei ao estado anterior excluindo newindexname. O cluster está de volta ao verde sem nenhuma entrada "Não atribuída".
Dado isso, como posso renomear oldindexnamepara newindexnameem um cluster?
Nota: a solução definitiva que tenho em mente é a de rolagem-cópia oldindexem newindexe excluir oldindexdepois. Isso vai levar tempo, então se houver uma solução mais direta, seria ótimo.