除了能够索引,更新和删除单个文档之外,Elasticsearch还提供了使用_bulk
API批量执行上述操作的功能。此功能很重要,因为它提供了一种非常有效的机制,可以用尽可能少的网络往返次数来尽可能快地执行多项操作。
简单示例,调用一个批量操作,为两个文档(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不会因其中一项操作失败而失败。如果单个操作由于任何原因而失败,它将继续处理其后的其余操作。批量API返回后,它将为每个操作提供状态(和发送顺序相同),以便您可以检查特定操作是否失败。