ES _bulk 批量操作用法

es 的 bulk 操作,是用来批量发送请求,或者理解为批量操作的。

支持4种操作

bulk 支持多种操作,如下createindexupdatedelete

  • create 如果文档不存在就创建,但如果文档存在就返回错误
  • index 如果文档不存在就创建,如果文档存在就更新
  • update 更新一个文档,如果文档不存在就返回错误
  • delete 删除一个文档,如果要删除的文档id不存在,就返回错误
语法结构

语法结构上,一个操作分为两部分,一部分指定操作类型和索引,另一部分是请求体;

针对不同的操作类型,第二行的请求体是不一样的

(1)index 和 create 第二行是source数据体

(2)delete 没有第二行

(3)update 第二行可以是partial doc,upsert或者是script

示例
复制代码
POST /_bulk
{"create":{"_index":"索引名", "_id":"文档"}} // 动作
{"field1":"value1"} //请求体
  1. 批量执行两个动作

    POST /_bulk
    {"create":{"_index":"zm_blog5"}}
    {"name":"小刘","desc":{"simple":"山西人","complete":"山西人,定居太原","other":"程序员"}}
    {"create":{"_index":"zm_blog5"}}
    {"name":"小刘","desc":{"simple":"山西人","complete":"山西人,定居太原","other":"程序员"}}

    POST zm_blog5/_bulk
    {"create":{}}
    {"name":"小刘","desc":{"simple":"山西人","complete":"山西人,定居太原","other":"程序员"}}
    {"create":{}}
    {"name":"小刘","desc":{"simple":"山西人","complete":"山西人,定居太原","other":"程序员"}}

执行返回结果

执行结果是分开的,比如发送2个操作,两个操作结果分别返回,可能其中一个失败另一个成功

比如执行:

复制代码
POST /_bulk
{"create":{"_index":"zm_blog5"}}
{"name":"小刘","desc":{"simple":"山西人","complete":"山西人,定居太原","other":"程序员"}}
{"create":{"_index":"zm_blog5"}}
{"name":"小刘","desc":{"simple":"山西人","complete":"山西人,定居太原","other":"程序员"}}

返回结果:

每个返回结果中有 http status,以及其他详细信息。

复制代码
{
  "took" : 8,
  "errors" : false,
  "items" : [
    {
      "create" : {
        "_index" : "zm_blog5",
        "_type" : "_doc",
        "_id" : "wKNBpYQBCuglFCwN_ObP",
        "_version" : 1,
        "result" : "created",
        "_shards" : {
          "total" : 1,
          "successful" : 1,
          "failed" : 0
        },
        "_seq_no" : 1,
        "_primary_term" : 1,
        "status" : 201  
      }
    },
    {
      "create" : {
        "_index" : "zm_blog5",
        "_type" : "_doc",
        "_id" : "waNBpYQBCuglFCwN_ObP",
        "_version" : 1,
        "result" : "created",
        "_shards" : {
          "total" : 1,
          "successful" : 1,
          "failed" : 0
        },
        "_seq_no" : 2,
        "_primary_term" : 1,
        "status" : 201
      }
    }
  ]
}

作者:zhimin_

链接:https://www.jianshu.com/p/60a792037f8c

来源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关推荐
kirs_ur9 小时前
ECC & LDPC — SSD 的数据卫士
服务器·数据库·性能优化
是三一seven10 小时前
Sql注入基础
数据库·安全·网络安全
Sirens.10 小时前
MySQL表设计进阶-约束范式连接索引与事务
android·数据库·mysql
字节跳动开源12 小时前
火山引擎开源 Agent 驱动的搜索自迭代技术
数据库·开源·agent
阿里云大数据AI技术13 小时前
阿里云 Elasticsearch 9.4 Agent Builder 实战
人工智能·elasticsearch·agent
Oo大司命oO14 小时前
藏在正则表达式里的陷阱
数据库·mysql·正则表达式
_oP_i15 小时前
mysql统计数据库使用存储大小
数据库
会编程的土豆15 小时前
MySQL 入门:库、表、行、主键是什么
linux·数据库·网络协议·http
jjjava2.015 小时前
系统日志:从入门到精通的完整指南
网络·数据库
写代码的强哥15 小时前
云原生数据库与传统数据库相比“新”在哪里
数据库·云原生·架构