elasticsearch的bulk(批量)操作

2023-11-02

    在es中我们可能会有这么一种需求,即有时需要批量向es中插入或更新或删除数据,如果一条一条数据的操作,那么速度必然很慢,那么es的bulk api就可以派上用场。

delete 删除操作,只需要写一个json即可
create 创建操作,如果需要创建的文档已经存在,那么创建失败
index 创建或替换操作,如果要创建的文档不存在则执行创建操作,如果已经存在则执行替换操作
update 更新操作  执行文档的更新


需求:
    1、使用create创建编号为21、22、23的文档
    2、使用create再次创建编号为22的文档,此时会失败,因为编号为22的文档已经存在
    3、使用index创建编号为24、25的文档
    4、使用index替换编号为25的文档
    5、修改编号为21的文档的数据
    6、删除编号为23的文档

curl -XPOST "http://192.168.99.1:9200/_bulk" -d'
{"create":{"_index":"productindex","_type":"product","_id":21}}
{"name":"21 name","price":21}
{"create":{"_index":"productindex","_type":"product","_id":22}}
{"name":"22 name","price":22}
{"create":{"_index":"productindex","_type":"product","_id":23}}
{"name":"23 name","price":23}
{"create":{"_index":"productindex","_type":"product","_id":22}}
{"name":"id为22的文档已经存在,创建失败","price":22}
{"index":{"_index":"productindex","_type":"product","_id":24}}
{"name":"文档不存在,被创建","price":24}
{"index":{"_index":"productindex","_type":"product","_id":25}}
{"name":"21 name","price":25}
{"index":{"_index":"productindex","_type":"product","_id":25}}
{"name":"由于编号为25的文档已经存在,执行替换操作,price字段的值没有了"}
{"update":{"_index":"productindex","_type":"product","_id":21}}
{"doc":{"name":"修改编号为21的文档的数据,price字段的值还在"}}
{"delete":{"_index":"productindex","_type":"product","_id":23}}
'

   执行结果,部分。
  
 

    批量执行完成之后,es会返回每个命令的执行的结果,其中一个命令报错,是不会影响其余的命令继续往下执行的。

    在批量执行api下,每个json串需要占据一行,不可将json字符串格式化,否则执行不了。

    bulk请求的请求体不建议太大,太大会影响性能。建议不要超过几十兆。如果出现索引队列不够用的时候,就需要调整threadpool.index.queue_size  的值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

elasticsearch的bulk(批量)操作 的相关文章

随机推荐

  • ext系列文件系统的LVM逻辑卷管理(外加扩容操作)

    此处我们准备两张盘 一张 dev sdb 一张 dev sdc 两张的所有储存都放在一个池子里 我们需要有个流程 一 将这两张盘变成物理卷 这里我们要注意 我们是可以分完区再将分区变成物理卷 不建议 原因就是脱裤子放屁 我们看下一步就知道了
  • linux杀死进程方法总结

    方法一 Terminal终端输入 gnome system monitor 就可以打开system monitor 然后找到相应进程 右击选择kill process就可以了 方法二 通过kill 进程id的方式可以实现 首先需要知道进程i
  • IDEA中使用Jacoco统计单元测试的代码覆盖率

    一 使用IDEA自带的代码覆盖率工具 1 查看配置 因为都是默认的 所以不用修改 点击Edit Configurations 点击上方的设置图标用以修改整个Junit的配置 或者也可以点击具体的单元测试文件来修改该文件的配置 默认方式是In
  • 别丢了那个在乎你的人

    任何一段关系里 一个人心里有你 zui 直接 zui 纯粹的表现 就是在乎 比遇见一个合适的人更重要 更幸运的 便是遇见一个打从心底里在乎你的人 那个人 不一定非要财富无数 也不一定非得长相出众 但他一定会把你放在心尖儿上 你的喜怒哀乐 他
  • CSR867x — TWS模式音量调节的交互流程

    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX 作 者 文化人 XX 联系方式 XX 版权声明 原创文章 欢迎评论和转载 转载时能告诉我一声就最好了 XX 要说的话 作者水
  • 【uni-app】 动态设置 tabBar

    uni setTabBarItem OBJECT 动态设置 tabBar 某一项的内容 不支持的平台有钉钉小程序 字节跳动小程序 setTabBar uni setTabBarItem index 0 title Home uni setT
  • SpringBoot常用配置類大全

    SpringBoot常用配置類大全 结合源码看注解 Target ElementType TYPE Retention RetentionPolicy RUNTIME Documented Inherited SpringBootConfi
  • Gradle添加依赖及使用注解(添加插件)

    一 基于Gradle可以构建很多项目 下面以Kotlin项目为例 package com reflections import sun management Agent author wangdong description 反射 定义一个
  • echarts图表宽度设置100%,结果echarts宽度只有100px,解决图表自适应宽度问题

    问题 我的echarts在tab选项卡中显示 为了自适应 用来渲染图表的div的宽度为100 但是charts渲染出来以后默认设置为了100px 原因 图表的父容器 li 是隐藏的 我默认设置 display none 图表在执行js初始化
  • Jmeter 课程笔记(一)两种录制脚本的方法:badboy和自设代理

    1 环境配置 配置Jmeter界面语言 bin目录下的jmeter properties 找到language改为zh CN 去掉注释并保存 操作的备份文件在backups目录下 用户手册目录 apache jmeter 4 0 print
  • np.load()读取npy文件

    在读取文件时 我们有时候会需要读取npy文件 有时候这样一个文件特别大读取起来非常慢 甚至有可能导致电脑卡死 所以这里记下一个笔记 在读取文件的时候只需要添加上读取方式 那么就会使用给定模式对文件进行内存映射 内存映射的矩阵保留在磁盘上 并
  • 华为OD机试 - 二叉树层序遍历(Java )

    题目描述 有一棵二叉树 每个节点由一个大写字母标识 最多26个节点 现有两组字母 分别表示后序遍历 左孩子 gt 右孩子 gt 父节点 和中序遍历 左孩子 gt 父节点 gt 右孩子 的结果 请你输出层序遍历的结果 输入描述 每个输入文件一
  • 吐血整理 python最全习题100道(含答案)持续更新题目,建议收藏!

    最近为了提升python水平 在网上找到了python习题 然后根据自己对于python的掌握 整理出来了答案 如果小伙伴们有更好的实现方式 可以下面留言大家一起讨论哦 已知一个字符串为 hello world yoyo 如何得到一个队列
  • 域名系统包含几类服务器,域名服务器可以划分为哪四种

    域名服务器可以划分为主域名服务器 辅助域名服务器 缓存域名服务器和转发域名服务器四种 主域名服务器的数据可以修改 辅助域名服务器的数据不可以修改 缓存域名服务器提供的信息都是间接信息 转发域名服务器负责所有非本地域名的本地查询 本文操作环境
  • 数字化转型的四大典型场景,TempoBI来支持

    当企业发展到一定规模的时候 如何进行业务管理 就变成了比业务增长更为棘手的首要难题 企业管理颗粒度越细致 越是重视对日常业务数据的梳理和分析 但这类企业 特别容易陷入到 表山表海 之中 小T之前就听过这样一个例子 有一家企业曾经试图推行 数
  • java base64转图片

    方法 传入文件路径和base64位的编码 base64转为图片 param path 文件路径 到文件夹即可 代码里会在文件夹里生成对应的jpg文件 param base64 return public static String base
  • c++面试常见问题汇总

    c 面试常见问题汇总 1 指针和引用的区别 2 堆栈的区别 3 new 和 delete 是如何实现的 与 malloc 和 free有什么异同 4 struct 和 class 的区别 5 define 和 const 的区别 6 在c
  • 【Java】下划线命名转驼峰命名,通过反射设置属性值

    在mybatis中进行对象关系映射时 肯定会用到的一个功能就是 对属性赋值 且还要满足下划线命名与驼峰命名的规范 在这里记录一下是如何实现的 下划线转驼峰 param name 属性名 return name 驼峰命名 public Str
  • c语言 整数拆分,C++ 整数拆分方法详解

    一 问题背景 整数拆分 指把一个整数分解成若干个整数的和 如 3 2 1 1 1 1 共2种拆分 我们认为2 1与1 2为同一种拆分 二 定义 在整数n的拆分中 最大的拆分数为m 我们记它的方案数为 f n m 即 n x1 x2 xk 1
  • elasticsearch的bulk(批量)操作

    在es中我们可能会有这么一种需求 即有时需要批量向es中插入或更新或删除数据 如果一条一条数据的操作 那么速度必然很慢 那么es的bulk api就可以派上用场 delete 删除操作 只需要写一个json即可 create 创建操作 如果