除了创建、更新和删除个别文档,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

 posted on 2017-04-27 14:25  段子手6哥  阅读(229)  评论(0编辑  收藏  举报