Elasticsearch提供的批量處理功能,是通過使用_bulk API實現的。這個功能之所以重要,在於它提供了非常高效的機制來盡可能快的完成多個操作,與此同時使用盡可能少的網絡往返。
1、批量索引,即批量添加文檔
以下調用在一次bulk操作中索引了兩個文檔(ID 1 - John Doe and ID 2 - Jane Doe):
curl -XPOST 'localhost:9200/customer/external/_bulk?pretty' -d ' {"index":{"_id":"1"}} {"name": "John Doe" } {"index":{"_id":"2"}} {"name": "Jane Doe" } '
2、以下例子在一個bulk操作中,首先更新第一個文檔(ID為1),然后刪除第二個文檔(ID為2):
curl -XPOST 'localhost:9200/customer/external/_bulk?pretty' -d ' {"update":{"_id":"1"}} {"doc": { "name": "John Doe becomes Jane Doe" } } {"delete":{"_id":"2"}} '
注意上面的delete動作,由於刪除動作只需要被刪除文檔的ID,所以並沒有對應的源文檔。
bulk API按順序執行這些動作。如果其中一個動作因為某些原因失敗了,將會繼續處理它后面的動作。當bulk API返回時,它將提供每個動作的狀態(按照同樣的順序),所以你能夠看到某個動作成功與否。