Saya perlu mengganti nama beberapa indeks dalam sebuah cluster (nama mereka harus diubah, saya tidak dapat menggunakan alias ).
Saya melihat bahwa tidak ada cara yang didukung untuk melakukan itu, yang paling dekat yang saya temukan adalah mengganti nama direktori indeks , saya mencoba ini di cluster.
Kluster memiliki 3 mesin A
, B
dan C
pecahannya direplikasi pada masing-masing mesin. Aku menutup elasticsearch pada A
, nama /var/lib/elasticsearch/security/nodes/0/indices/oldindexname
untuk /var/lib/elasticsearch/security/nodes/0/indices/newindexname
dan restart A
.
Status cluster berwarna kuning dan elasticsearch melakukan sihir untuk memulihkan status yang benar. Setelah beberapa waktu saya berakhir dengan
oldindexname
tersedia dan direplikasi sepenuhnya (dipulihkan dariB
danC
saya kira)newindexname
sedang tersedia (saya dapat mencarinya) tetapi plugin head menunjukkan bahwa shard-nya berada dalam status "Belum ditetapkan" dan berwarna abu-abu (tidak direplikasi)
Selama pemulihan security.log
menunjukkan pesan berikut:
[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
Meskipun newindexname
dapat dicari, ini tentu tidak dalam keadaan normal.
Saya memutar kembali ke keadaan sebelumnya dengan menghapus newindexname
. Cluster kembali menjadi hijau tanpa entri "Belum ditetapkan".
Mengingat itu, bagaimana saya bisa mengganti nama oldindexname
menjadi newindexname
dalam sebuah cluster?
Catatan: solusi pamungkas yang ada dalam pikiran saya adalah menggulir-salin oldindex
ke newindex
dan menghapus oldindex
sesudahnya. Ini akan memakan waktu, jadi jika ada solusi yang lebih langsung, itu akan bagus.