Devo rinominare diversi indici in un cluster (il loro nome deve essere cambiato, non posso usare gli alias ).
Ho visto che non ci sono modi supportati per farlo, il più vicino che ho trovato è rinominare la directory dell'indice , l'ho provato in un cluster.
Il cluster ha 3 macchine A
, B
e C
ed i frammenti vengono replicate su ciascuno di essi. Ho spento elasticsearch su A
, rinominato /var/lib/elasticsearch/security/nodes/0/indices/oldindexname
per /var/lib/elasticsearch/security/nodes/0/indices/newindexname
e riavviato A
.
Lo stato del cluster era giallo e elasticsearch stava facendo qualche magia per ripristinare uno stato corretto. Dopo un po 'ho finito con
oldindexname
essere disponibile e completamente replicato (recuperato daB
eC
immagino)newindexname
essendo disponibile (posso cercarlo) ma il plug-in principale mostra che i suoi frammenti sono in uno stato "Non assegnato" e che sono disattivati (non replicati)
Durante il recupero ha security.log
mostrato il seguente messaggio:
[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
Sebbene newindexname
sia ricercabile, non è certamente in uno stato normale.
Sono tornato allo stato precedente eliminando newindexname
. Il cluster è tornato verde senza alcuna voce "Non assegnato".
Dato che, come posso rinominare oldindexname
a newindexname
in un cluster?
Nota: l'ultima soluzione che ho in mente è quello di scroll-copia oldindex
in newindex
e cancellare oldindex
in seguito. Questo richiederà tempo, quindi se esiste una soluzione più diretta sarebbe fantastico.