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

来源:简书

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

相关推荐
薛定谔的算法14 小时前
phoneGPT:构建专业领域的检索增强型智能问答系统
前端·数据库·后端
Databend15 小时前
Databend 亮相 RustChinaConf 2025,分享基于 Rust 构建商业化数仓平台的探索
数据库
得物技术16 小时前
破解gh-ost变更导致MySQL表膨胀之谜|得物技术
数据库·后端·mysql
MacroZheng20 小时前
横空出世!MyBatis-Plus 同款 ES ORM 框架,用起来够优雅!
java·后端·elasticsearch
Raymond运维21 小时前
MariaDB源码编译安装(二)
运维·数据库·mariadb
沢田纲吉21 小时前
🗄️ MySQL 表操作全面指南
数据库·后端·mysql
RestCloud2 天前
SQL Server到Hive:批处理ETL性能提升30%的实战经验
数据库·api
RestCloud2 天前
为什么说零代码 ETL 是未来趋势?
数据库·api
ClouGence2 天前
CloudCanal + Paimon + SelectDB 从 0 到 1 构建实时湖仓
数据库
Elasticsearch2 天前
平衡尺度:利用权重使倒数排序融合 (RRF) 更加智能
elasticsearch