クラスター内のいくつかのインデックスの名前を変更する必要があります(名前を変更する必要があります。エイリアスを使用できません)。
サポートされている方法はないことがわかりました。最も近いのは、インデックスのディレクトリの名前を変更することです。これをクラスターで試しました。
クラスターには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
後で削除することです。これには時間がかかるので、より直接的な解決策があれば素晴らしいでしょう。