2017-11-27 1 views
0

私は10万以上のドキュメントを格納するElasticSearchインデックスを持っています。私はすべてのインデックスを繰り返し、各ドキュメントの新しいフィールドと値を追加する必要があります。私は2つのアプローチについて知っています: 1.スクロール検索を使用してすべての結果を取得し、BULK APIを使用してすべてのドキュメントを新しいインデックス[コピー中に新しいフィールドを追加]にコピーします。すべてのドキュメントが新しいインデックススイッチエイリアスにコピーされた後。 2.スクロール検索と一括APIを使用して、既存のインデックス内のすべてのドキュメントを更新します(新しいインデックスにコピーする必要はなく、エイリアスを切り替える必要はありません)。ElasticSearchで1,000万件のドキュメントに新しいフィールドを追加します。

私は理解していない、なぜ最初にアプローチすることをお勧めしますか?私はちょうど2つのアプローチを使用できますか? 2つのアプローチでプログラムを実行している間に、インデックスに何か悪いことが起こる可能性はありますか?私は更新する必要があるインデックスは、ライブのprodデータを持っていると私は顧客が

答えて

1

は無痛

POST /mysqltest/_update_by_query 
{ 
    "query": { 
    "match_all": {} 
    }, 
"script": { "inline": "ctx._source.category = \"10\";" } --> category is new key that to be added in all documents 
} 
をスクリプトを使用して何らかの形で影響を受ける可能性があることを心配しました
関連する問題