06-Elasticsearch-批量操作 bulk
批量操作 bulk
基本语法
bulk操作和以往的普通请求格式有区别, 不要格式化JSON, 不然就不在同一行了, 这个需要注意
{action:{metadata}}
代表批量操作的类型, 可以是新增, 删除, 修改\n
是每行结尾必须填写的一个规范, 每一行包括最后一行都要写, 用于ES 解析(不要写出来,就是回车换行){request body}
是请求body, 增加和修改操作需要, 删除操作则不需要
批量操作的类型
action必须是一下选项之一:
- create:如果文档不存在,那么就创建它。存在会报错。发生异常报错不会影响其他操作。
- index:创建一个新文档或者替换一个现有文档。
- update:部分更新一个文档。
- delete:删除一个文档。
metadata中需要指定要操作的文档的_index、_type和_id,_index、_type也可以在url中指定。
样例
批量新增记录
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" }
简写
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" }
批量新增/替换
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" }
批量修改
POST /shop2/_bulk { "update":{"_id":"2008" } } { "doc":{"id":"1", "nickname":"name-1"} } { "update":{"_id":"2009" } } { "doc":{"id":"2", "nickname":"name-2"} }
批量删除
POST /shop2/_bulk { "delete":{"_id":"2008" } } { "delete":{"_id":"2009" } }
批量的操作可以结合使用