2017-12-15 8 views
1

私は、ElasticSearchで同じインデックスを供給する2つの異なるSparkジョブを持っています。あるセットのフィールドを埋めるものと、もう1つは、残りのデータとのインデックスです。ElasticSearch UpsertまたはIndexは私の場合が正しいですか?

私の質問は、私はインデックス(私は答えがいいえ、私は最初の仕事AFAIKからのデータを失うだろうと思う)またはupsertを使用する必要がありますか?

upsert(これは私が今再生しているもの)の場合、FORCE/INTERNALのバージョン管理タイプを許可します。FORCEは理論的には使用しないでください。これは私のニーズに合っています簡単なテストの観点。

内部を試してみると、現在のバージョンが-1で、1に設定しようとしているというバージョンの競合があります。バージョンを-1に設定してFORCEの代わりにINTERNALを使用するのは安全ですか?

答えて

0

あなたが最初のケースでは、あなたのユースケースread more

のためにアップサートに使用できる文書が、それはちょうどあなたの文書に値を追加しますがあれば、それは彼らの第二ではない場合、それがインデックスを挿入します。

+0

upsertを使用するたびに、更新されているデータは常に私が言及したバージョンの競合エラー(「バージョンの競合、現在のバージョン[-1]が提供されているものとは異なります[1]ただし、バージョン管理の種類をFORCEに設定している場合は、ドキュメントに従って回避する必要があります。 – Samuel

+0

これは、1つの文書に対して並列更新を行う場合にのみ発生します。 FORCEを使用してはいけません。データが乱れる可能性があります。私はドキュメントが更新されていて、同じドキュメントが別のプロセスによって並行して開かれていれば、バージョンエラーが発生します。 –

+0

私のテストでは、アップデートは並行して実行されていませんが、それは確かです。 2番目の操作は一般的に数秒後に実行されます。それが事実ならば、再審で十分でしょうか? – Samuel

関連する問題