私は、ElasticSearchで同じインデックスを供給する2つの異なるSparkジョブを持っています。あるセットのフィールドを埋めるものと、もう1つは、残りのデータとのインデックスです。ElasticSearch UpsertまたはIndexは私の場合が正しいですか?
私の質問は、私はインデックス(私は答えがいいえ、私は最初の仕事AFAIKからのデータを失うだろうと思う)またはupsertを使用する必要がありますか?
upsert(これは私が今再生しているもの)の場合、FORCE/INTERNALのバージョン管理タイプを許可します。FORCEは理論的には使用しないでください。これは私のニーズに合っています簡単なテストの観点。
内部を試してみると、現在のバージョンが-1で、1に設定しようとしているというバージョンの競合があります。バージョンを-1に設定してFORCEの代わりにINTERNALを使用するのは安全ですか?
upsertを使用するたびに、更新されているデータは常に私が言及したバージョンの競合エラー(「バージョンの競合、現在のバージョン[-1]が提供されているものとは異なります[1]ただし、バージョン管理の種類をFORCEに設定している場合は、ドキュメントに従って回避する必要があります。 – Samuel
これは、1つの文書に対して並列更新を行う場合にのみ発生します。 FORCEを使用してはいけません。データが乱れる可能性があります。私はドキュメントが更新されていて、同じドキュメントが別のプロセスによって並行して開かれていれば、バージョンエラーが発生します。 –
私のテストでは、アップデートは並行して実行されていませんが、それは確かです。 2番目の操作は一般的に数秒後に実行されます。それが事実ならば、再審で十分でしょうか? – Samuel