2017-01-27 8 views
0

弾性検索インデックスを再インデックスするのにベストプラクティスは何ですか? This投稿には、索引を再索引付けする前にlogstashインデクサーを停止する手順がいくつかありますが、これは本番サーバーとしての私にとってはオプションではありません。elasticsearchでインデックスを再インデックスする - ELK

デフォルトのマッピングテンプレートがないため、インデックスに* .rawフィールドがないという問題がありました。私は、Elasticsearchのマッピングテンプレートを使用してhereを見つけ、それを使用するようにESクラスタを設定しましたが、新しいインデックスが作成されたとき、または既存のインデックスを明示的に再インデックスするときにのみ使用されると思います。

/_template?prettyまた、上記のテンプレートを追加した後には、/_template?prettyは新しいテンプレートを表示しますが、作成される新しいインデックスは自動的にこの新しいテンプレートを使用しますか?あるいは、ESを明示的に使用するように設定する必要がありますか?

私は本当にここでいくつかの助けに感謝します。

答えて

1

この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 
関連する問題