ES _bulk 批量操作用法

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

支持4种操作

bulk 支持多种操作,如下create、index、update、delete。

  • 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

来源:简书

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

相关推荐
唐老板42 分钟前
uuidv7 来了:为什么别再拿 uuidv4 当主键了
数据库
SelectDB14 小时前
让变更流出 Doris:Apache Doris 5.0 基于增量计算的 CDC 技术解析
数据库
这个DBA有点耶14 小时前
MCP隔离层+行级语义审计+输出校验:AI访问数据库的安全边界拆解
数据库·人工智能·ai编程
新*15 小时前
Elasticsearch 7.17 的 SQL 到底能查到什么?一次踩坑记录
后端·sql·elasticsearch·查询
这个DBA有点耶15 小时前
从反向扫描O(n)到正向扫描O(1):降序索引的物理机制与混合排序匹配规则
数据库
2501_9339232516 小时前
解读Redis:单线程模型
数据库·redis·缓存
Tapdata17 小时前
被忽略的第三类上下文:Agent 进入真实业务后,还缺什么?
数据库·人工智能·架构
小科先生18 小时前
Java springboot调用数据库的基本流程
java·数据库·spring boot
星恒随风18 小时前
MySQL 从零入门(四):表的增删改查与基础查询详解
linux·服务器·数据库·笔记·mysql
Pniubi20 小时前
MySQL靠什么实现事务的?事务隔离级别有哪些?
java·数据库·mysql