4

ElasticSearchインデックスをスキャンする場合、ドキュメントに従って並べ替えを適用することはできません。しかし、このプロセス中の結果の順序について何か定義はありますか?はいの場合、それは予測可能ですか?

背景情報:

定期的に5Mのドキュメントを操作する必要があり、1.000のドキュメントの各バッチの処理には約1分かかります。実行するたびにプロセスが終了するかどうかわからないので、前回中断された場所で作業をピックアップさせたいと思います。たとえば、スクロール結果を次のように並べ替えたID場合などです。そうではありません)、コードで最後に処理されたものを追跡IDし、次の実行では、を使用してドキュメントを処理しなくなりID <= lastProcessedId、すべてのドキュメントが定期的に処理されるようにします。

ところで:「ドキュメントを処理する」とは、追加情報をインデックスに書き戻すことではなく、データベース内の他のものを更新することを意味します。プロセスが中断される理由の1つは、インデックスが新しいインデックスに置き換えられた(最初から再構築された)ためである可能性があるため、インデックス付きドキュメントにタイムスタンプを書き込むことは私の場合には役に立ちません。処理されたタイムスタンプをデータベースに書き込むことも、私にとって望ましいオプションではありません。なぜなら、反復パフォーマンスが、最初にインデックスを使用してスクロールする理由だからです。

4

1 に答える 1

4

いいえ、並べ替え順序は予測できません。タイムスタンプを使用することを提案するつもりでしたが、それから私はあなたの質問の残りを読みました:)

実際、スキャンされた検索を「再開可能」にする唯一の方法は、ドキュメントをタイムスタンプやIDなどのフィールドのトランシェに分割し、範囲クエリを使用して一度に1つのトランシェだけをスクロールすることです。

于 2013-03-15T10:47:56.167 に答える