このIMOを実行する最善の方法は、実際のインデックスを指す別名を使用することです。 (https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-aliases.html)、照会(または低いものを追加)する場合my-index-alias
あなたのインデックスにmy-actual-index-20170101
POST /_aliases
{
"actions" : [
{ "add" : { "index" : "my-actual-index-20170101", "alias" : "my-index-alias" } }
]
}
を指しているようなもの、あなたは常にエイリアス名を使用します。
インデックスを再作成する必要がある場合は、別のインデックス(例ではmy-actual-index-20170127
)にインデックスを再作成し、インデックスの再作成が完了したら、新しいインデックスを指すようにエイリアスを更新します。
POST /_aliases
{
"actions" : [
{ "remove" : { "index" : "my-actual-index-20170101", "alias" : "my-index-alias" } },
{ "add" : { "index" : "my-actual-index-20170127", "alias" : "my-index-alias" } }
]
}
コードを変更せずに、またはダウンタイムを伴うことなくインデックスを再インデックスすることができます。
実際の再インデックスの問題に関して、私は多くの成功(https://www.npmjs.com/package/elasticsearch-reindex)のelasticsearch-reindex
ノードアプリケーションを使用していました。
その使用方法は簡単です。
NPM(npm install -g elasticsearch-reindex
)とそれをインストールした後、あなただけ実行することができます
elasticsearch-reindex -f http://localhost:9200/my-actual-index-20170101/{type of documents} -t http://localhost:9200/my-actual-index-20170127