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

来源:简书

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

相关推荐
Elastic 中国社区官方博客8 分钟前
Elasticsearch 开放推理 API 增加了对 Google 的 Gemini 模型的支持
大数据·人工智能·elasticsearch·搜索引擎·ai·全文检索·googlecloud
行者游学22 分钟前
ETCD 集群备份与恢复
数据库·etcd
行者游学25 分钟前
ETCD 学习使用
数据库·学习·etcd
代码程序猿RIP25 分钟前
【Etcd 】Etcd 详解以及安装教程
linux·数据库·etcd
rit84324991 小时前
Git常用命令的详细指南
大数据·git·elasticsearch
tqs_123451 小时前
创建es索引
数据库·es
亚林瓜子1 小时前
AWS OpenSearch(ES)启用慢速日志
elasticsearch·性能调优·aws·log·opensearch·日志组
间彧1 小时前
Mysql优化指南:善用覆盖索引,提升查询效率
数据库
间彧2 小时前
MySQL优化指南:执行计划type字段详解
数据库