클러스터에있는 여러 인덱스의 이름 을 변경 해야 합니다 (이름 을 변경 해야 하며 별칭을 사용할 수 없습니다 ).
지원되는 방법이 없다는 것을 알았습니다. 가장 가까운 방법 은 인덱스의 디렉토리 이름 을 바꾸는 것 입니다. 클러스터에서 시도했습니다.
클러스터는 3 기계를 가지고 A
, B
그리고 C
와 파편이 그들 각각에 복제됩니다. 에서 elasticsearch를 종료하고로 A
이름 /var/lib/elasticsearch/security/nodes/0/indices/oldindexname
을 바꾸고 /var/lib/elasticsearch/security/nodes/0/indices/newindexname
다시 시작했습니다 A
.
클러스터의 상태는 노란색이었고 elasticsearch는 올바른 상태를 복원하기 위해 마법을 사용했습니다. 얼마 후 나는
oldindexname
사용 가능하고 완전히 복제 됨 (복구B
및C
추측)newindexname
사용할 수 있지만 (검색 할 수 있음) 헤드 플러그인에 샤드가 "할당되지 않음"상태이고 회색으로 표시됨 (복제되지 않음)이 표시됨
복구하는 동안 security.log
다음 메시지가 표시되었습니다.
[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
newindexname
검색 할 수 있지만 확실히 정상 상태는 아닙니다.
을 삭제하여 이전 상태로 롤백했습니다 newindexname
. 클러스터는 "할당되지 않음"항목없이 다시 녹색으로 돌아갑니다.
그렇다면 클러스터에서 어떻게 이름 oldindexname
을 바꿀 수 newindexname
있습니까?
참고 : 내가 염두에두고있는 궁극적 인 해결책은 스크롤 복사 oldindex
하여 나중에 newindex
삭제하는 것 oldindex
입니다. 이것은 시간이 걸릴 것이므로보다 직접적인 솔루션이 있다면 좋을 것입니다.