バッチ処理

edit

個別ドキュメントのインデキシング、更新、および削除が可能であるだけでなく、Elasticsearchは​_bulk API​を使用してこれらのオペレーションのいずれかを一括で実行することもできます。この機能は、必要最小限のネットワークの往復で、複数の操作を可能な限り高速に実行する非常に効率の良いメカニズムを提供するという点で重要です。

簡単な例として、次の呼び出しは、一括操作で2つのドキュメントにインデックスを付けます(ID 1 - John DoeおよびID 2 - Jane Doe)。

POST /customer/external/_bulk?pretty
{"index":{"_id":"1"}}
{"name": "John Doe" }
{"index":{"_id":"2"}}
{"name": "Jane Doe" }

次の例は、一括操作で、1つ目のドキュメント(IDが1)を更新してから、2つ目のドキュメント(IDが2)を削除します。

POST /customer/external/_bulk?pretty
{"update":{"_id":"1"}}
{"doc": { "name": "John Doe becomes Jane Doe" } }
{"delete":{"_id":"2"}}

上記の削除操作の場合、削除には削除対象のドキュメントのIDのみが必要なため、削除操作後は対応するソースドキュメントがなくなります。

Bulk APIは、操作の1つに障害が生じても失敗しません。何らかの理由により単一の操作が失敗した場合、残りの操作は処理を続けます。Bulk APIが返ると、操作ごとのステータスが提供されるため(送信時と同じ順序)、特定の操作が失敗したかどうかをチェックできます。