06-Elasticsearch-批量操作 bulk

2022-10-04 08:25:53 浏览数 (1)

批量操作 bulk

基本语法

bulk操作和以往的普通请求格式有区别, 不要格式化JSON, 不然就不在同一行了, 这个需要注意

  • {action:{metadata}}代表批量操作的类型, 可以是新增, 删除, 修改
  • n是每行结尾必须填写的一个规范, 每一行包括最后一行都要写, 用于ES 解析(不要写出来,就是回车换行)
  • {request body}是请求body, 增加和修改操作需要, 删除操作则不需要

批量操作的类型

action必须是一下选项之一:

  • create:如果文档不存在,那么就创建它。存在会报错。发生异常报错不会影响其他操作。
  • index:创建一个新文档或者替换一个现有文档。
  • update:部分更新一个文档。
  • delete:删除一个文档。

metadata中需要指定要操作的文档的_index、_type和_id,_index、_type也可以在url中指定。

样例

批量新增记录

代码语言:javascript复制
POST /_bulk
{ "create":{ "_index":"shop2", "_id":"2005" } }
{ "id":"2005", "nickname":"name-2005" }
{ "create":{ "_index":"shop2","_id":"2006" } }
{ "id":"2006", "nickname":"name-2006" }
{ "create":{ "_index":"shop2", "_id":"2007" } }
{ "id":"2007", "nickname":"name-2007" }

简写

代码语言:javascript复制
POST /shop2/_bulk
{ "create":{"_id":"2008" } }
{ "id":"2008", "nickname":"name-2008" }
{ "create":{"_id":"2009" } }
{ "id":"2009", "nickname":"name-2009" }
{ "create":{"_id":"20011" } }
{ "id":"2011", "nickname":"name-20011" }

批量新增/替换

代码语言:javascript复制
POST /shop2/_bulk
{ "index":{"_id":"2008" } }
{ "id":"2008", "nickname":"name-2008" }
{ "index":{"_id":"2009" } }
{ "id":"2009", "nickname":"name-2009" }
{ "index":{"_id":"20011" } }
{ "id":"2010", "nickname":"name-20010" }

批量修改

代码语言:javascript复制
POST /shop2/_bulk
{ "update":{"_id":"2008" } }
{ "doc":{"id":"1", "nickname":"name-1"} }
{ "update":{"_id":"2009" } }
{ "doc":{"id":"2", "nickname":"name-2"} }

批量删除

代码语言:javascript复制
POST /shop2/_bulk
{ "delete":{"_id":"2008" } }
{ "delete":{"_id":"2009" } }

批量的操作可以结合使用

0 人点赞