Elasticsearch 的批处理

前面已经介绍了如何使用ES提供的REST API去做CRUD操作,但是这些操作都是单一的.今天来介绍一下ES中的批处理,可以批量CUD索引和文档

1
curl -XPOST 'localhost:9200/bank/account/_bulk?pretty' --data-binary "@accounts.json"

@accounts.json是存在当前目录下的一个json文件,里面存储了一个josn数组,你可以让她存储任何结构相同的数组.

所有的批量操作都是使用_bluk API来完成,上面的操作就是为accounts.json里面的数据建立索引.

  • 除了批量操作数据之外,ES还可以对一条或多条数据进行多步骤操作.
    1
    2
    3
    4
    5
    6
    7
    curl -XPOST 'localhost:9200/blog/article/_bulk?pretty' -d '
    {"index":{"_id":"1"}}
    {"title": "batch bulk api title 1" }
    {"update":{"_id":"2"}}
    {"doc": {"title": "batch bulk api title 2" }}
    {"delete":{"_id":"3"}}
    '

上面的批量操作一共干了三件事情:

  1. 将id是1的Document重新以新的数据重新索引,因此该Document的version会自增1
  2. 更新了id是2的Document中的title数据,只是更新数据,并不涉及到重新索引所以version不会变化
  3. 删除了id为3的文档
    更多的批处理操作可以参考Bulk API

参考

Elasticsearch Batch Processing
Elasticsearch Bulk API