批处理
除了可以索引, 更新, 删除一个文档之外, Elasticsearch还可以用_bulk API提供批量执行上面操作的能力. 这个功能十分重要. 因为他在可以在节约网络带宽的情况下非常搞笑的执行多次操作.
下面的例子, 展示了如何通过一个bulk操作索引2个文档(ID 1 John Doe 和 ID 2 Jane Doe):
POST /customer/_doc/_bulk?pretty
{"index":{"_id":"1"}}
{"name": "John Doe" }
{"index":{"_id":"2"}}
{"name": "Jane Doe" }
下面的例子展示了, 更新第一个文档(ID为1), 然后把第二个文档(ID为2)删除:
POST /customer/_doc/_bulk?pretty
{"update":{"_id":"1"}}
{"doc": { "name": "John Doe becomes Jane Doe" } }
{"delete":{"_id":"2"}}
注意,对于删除操作,没有相应的源文档,因为删除只需要删除文档的ID.
Bulk API不会因为其中一个操作失败而失败. 如果一个操作因为某种原因失败了. 他会继续执行其他的操作. 当Bulk API返回时, 他会展示每个操作的状态(和我们传递的顺序一致). 这样你就可以检查哪一个操作成功, 哪一个操作失败了.