Elasticsearch-批量操作(bulk)

  1. bulk的基础概念
    bulk是es提供的一种批量增删改的操作API。
  2. bulk的语法
    bulk对JSON串的有着严格的要求。每个JSON串不能换行,只能放在同一行,同时,相邻的JSON串之间必须要有换行(Linux下是\n;Window下是\r\n)。bulk的每个操作必须要一对JSON串(delete语法除外)。
POST /_bulk
{ "action": { "metadata" }}\n
{ "data" }\n
{ "action": { "metadata" }}\n
{ "data" }\n
...

eg: 新增11,修改3 删除5

POST /_bulk
{"create": {"_index": "test_index", "_id": 11}}\n
{"test_field": "test_bulk", "counter":"100"}\n
{"update": {"_index": "test_index", "_id": 3}}\n
{"doc": {"test_field": "bulk test"}}\n
{"delete": {"_index": "test_index", "_id": 5}}

bulk的操作类型
create 如果文档不存在就创建,但如果文档存在就返回错误
update 更新一个文档,如果文档不存在就返回错误
delete 删除一个文档,如果要删除的文档id不存在,就返回错误
某一个操作失败,是不会影响其他文档的操作的,它会在返回结果中告诉你失败的详细的原因

bulk这样书写的好处:

  1. bulk中的每个操作都可能要转发到不同的node的shard去执行
  2. 直接按照换行切割json
  3. 对每两个一组的json,渠道meta,进行document路由
  4. 直接将对应的json发送到node上
posted @   py卡卡  阅读(714)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
点击右上角即可分享
微信分享提示