免責事項:この回答が更新されました。
部分的な更新を実現するには、scriptを定義することができます。
理論的には、再インデックス化されるドキュメントに任意の変換を適用することができます。
(オリジナルの答えの終わり。)質問の著者が指摘したように1が2をマージする必要がある場合、それは助けないカスタムREINDEX-とマージ
を実装
結果の索引にすでに存在するものと新しいものが含まれます。
弾性抽出_reindex
の方法がversion 2.3に導入され、実験的であると考えられた。単にscrollというクエリとbulk insert APIの組み合わせのように見えます。効率的に古いインデックスからすべてのドキュメントのインデックスを再作成するには
、昔からの文書のバッチを取得するために、スクロールを使用します。私はDefinitive Guideの中this pageは、このようにあなたのデータのインデックスを再作成することを提案するという事実に基づいてこの結論を作りますインデックス、およびバルクAPIを使用して、それらを新しいインデックスにプッシュします。
ここで、部分更新の必要性に対処する。
- 併合ドキュメント
- インデックスBからインデックスから
- 読取原稿を原稿を読み取るBに新しい文書を挿入:REINDEX-とマージのプロセスは、大きく4つの段階に分けることができます
ステージ1と4は実際にはreindex
コールの元のシナリオです。それを今異なるものにするのは、別のインデックスに参加してドキュメントをマージする必要があるからです。
カスタムスクリプトを書いて、インデックスAをストリーミング形式で読み込むためにscroll
、インデックスBから文書を取り出すための一括API、文書をマージするカスタムコード、文書を挿入するバルクAPIを使用することを提案します。このようなスクリプトのパフォーマンスは、元のreindex
の実装と少なくとも同等です。 (また、あなたは/特定の増加で、index performance tuning tipsで、このページをチェックしてくださいindex.refresh_interval
を無効にすることを確認してください。)もちろんElasticSearchに関連していないと、この質問の著者は、すでに(と考えているかもしれない他のオプション、あります
両方のインデックスをダンプする、カスタムコードで結合する、新しいインデックスを挿入するなど)。
これが役に立ちます。
はい、私が間違っていない限り、その変換はソースインデックスから来るデータに適用され、宛先ドキュメント自体には適用されません。 – SebScoFr
@SebScoFrはい、そうです。私はそれが関係ないので私の答えを削除します。 –