Muszę zmienić nazwę kilku indeksów w klastrze ( należy zmienić ich nazwę , nie mogę używać aliasów ).
Widziałem, że nie ma obsługiwanych sposobów, aby to zrobić, najbliższy, jaki znalazłem, to zmiana nazwy katalogu indeksu , próbowałem tego w klastrze.
Klaster zawiera 3 maszyny A
, B
a C
fragmenty są replikowane na każdym z nich. Wyłączyłem elastyczne wyszukiwanie, zmieniłem A
nazwę /var/lib/elasticsearch/security/nodes/0/indices/oldindexname
na /var/lib/elasticsearch/security/nodes/0/indices/newindexname
i uruchomiłem ponownie A
.
Stan klastra był żółty, a elastyczne wyszukiwanie robiło magię, aby przywrócić prawidłowy stan. Po jakimś czasie skończyłem z
oldindexname
bycie dostępnym i w pełni replikowanym (odzyskanym zB
iC
jak sądzę)newindexname
jest dostępny (mogę go przeszukać), ale wtyczka head pokazuje, że jego fragmenty są w stanie „Nieprzypisane” i są wyszarzone (nie są replikowane)
Podczas odzyskiwania security.log
pojawił się następujący komunikat:
[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
Chociaż newindexname
można go przeszukiwać, z pewnością nie jest w normalnym stanie.
Przywróciłem poprzedni stan, usuwając newindexname
. Klaster powraca do koloru zielonego bez żadnych wpisów „Nieprzypisane”.
Biorąc to pod uwagę, jak mogę zmienić nazwę oldindexname
na newindexname
w klastrze?
Uwaga: najlepszym rozwiązaniem Mam na myśli to, aby przewinąć-egzemplarzu oldindex
do newindex
i usuwać oldindex
później. To zajmie trochę czasu, więc jeśli istnieje bardziej bezpośrednie rozwiązanie, byłoby wspaniale.