除了創建、更新和刪除個別文檔,Elasticsearch還提供了使用_bulk API的上述操作的批量操作方法。這個功能很重要,因為他提供了一種有效的機制來在盡可能少的網絡傳輸過程中執行多次操作。
作為一個快速示例,下面的命令在一次批量操作中索引了兩個文檔(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" }
下面的示例在一次批量操作中更新了ID為1的文檔并且刪除了第二個文檔(ID為2的):
POST /customer/external/_bulk?pretty {"update":{"_id":"1"}} {"doc": { "name": "John Doe becomes Jane Doe" } } {"delete":{"_id":"2"}}
注意,上面的delete命令并沒有source作為參數,因為刪除操作需要文檔的ID即可完成。
批量API中的某個動作失敗并不會導致整個事務失敗,如果因為某種原因其中一個動作失敗了,其他的動作仍然會繼續執行。當該API調用執行完畢,在返回值中會提供每個動作的狀態(與提交請求時的動作順序相同),所以從中你可以得知哪個動作失敗或成功了。
?
?
?
本文系本人根據官方文檔的翻譯,能力有限、水平一般,如果對想學習Elasticsearch的朋友有幫助,將是本人的莫大榮幸。
https://www.elastic.co/guide/en/elasticsearch/reference/current/_batch_processing.html