ElasticSearch文档批量操作[ES系列] - 第503篇

历史文章(文章累计500+)

国内最全的Spring Boot系列之一

国内最全的Spring Boot系列之二

国内最全的Spring Boot系列之三

国内最全的Spring Boot系列之四

国内最全的Spring Boot系列之五》

国内最全的Spring Boot系列之六

国内最全的Spring Boot系列之七》

ElasticSearch扫盲概念篇[ES系列] - 第500篇

ElasticSearch重建/创建/删除索引操作 - 第501篇

ElasticSearch文档操作[ES系列] - 第502篇

导读

Hi,大家好,我是悟纤。我就是我,不一样的烟火。我就是我,与众不同的小苹果。

这一节来看看ES的文档批量操作 -- 增删改查。

一、文档批量操作

批量操作可以减少网络连接所产生的开销,提升性能

· 支持在一次API调用中,对不同的索引进行操作

· 可以在URI中指定Index,也可以在请求的Payload中进行

· 操作中单条操作失败,并不会影响其他操作

· 返回结果包括了每一条操作执行的结果

1.1 批量写入

批量对文档进行写操作是通过_bulk的API来实现的

· 请求方式:POST

· 请求地址:_bulk

· 请求参数:通过_bulk操作文档,一般至少有两行参数(或偶数行参数)

o 第一行参数为指定操作的类型及操作的对象(index,type和id)

o 第二行参数才是操作的数据

参数类似于:

复制代码
{"actionName":{"_index":"indexName", "_type":"typeName","_id":"id"}}{"field1":"value1", "field2":"value2"}​
  • actionName:表示操作类型,主要有create,index,delete和update

1.2 批量创建文档create

复制代码
POST _bulk{"create":{"_index":"article","_id":3}}{"id":3,"title":"fox老师","content":"老师666","tags":["java", "面向对象"],"create_time":1554015482530}{"create":{"_index":"article", "_id":4}}{"id":4,"title":"mark老师","content":"老师NB","tags":["java", "面向对象"],"create_time":1554015482530}​

1.3 普通创建或全量替换index

复制代码
POST _bulk{"index":{"_index":"article", "_id":3}}{"id":3,"title":"张三老师","content":"老师888","tags":["java", "面向对象"],"create_time":1554015482530}{"index":{"_index":"article", "_id":4}}{"id":4,"title":"李四老师","content":"老师888","tags":["java", "面向对象"],"create_time":1554015482530}​

· 如果原文档不存在,则是创建

· 如果原文档存在,则是替换(全量修改原文档)

1.4 批量修改update

复制代码
POST _bulk{"update":{"_index":"article",  "_id":3}}{"doc":{"title":"ES从入门到放弃"}}{"update":{"_index":"article", "_id":4}}{"doc":{"create_time":1654018421008}}​

1.5 批量删除delete

复制代码
POST _bulk{"delete":{"_index":"article",  "_id":3}}{"delete":{"_index":"article",  "_id":4}}​

1.6 组合应用

复制代码
POST _bulk{"index":{"_index":"article", "_id":3}}{"id":3,"title":"悟空老师","content":"悟空老师666","tags":["java", "面向对象"],"create_time":1554015482530}{"delete":{"_index":"article",  "_id":3}}{"update":{"_index":"article", "_id":4}}{"doc":{"create_time":1654018421008}}​

1.7 批量读取

es的批量查询可以使用mget和msearch两种。其中mget是需要我们知道它的id,可以指定不同的index,也可以指定返回值source。msearch可以通过字段查询来进行一个批量的查找。

1.7.1 _mget

复制代码
GET _mget{  "docs": [    {      "_index": "es_db",      "_id": 1    },    {      "_index": "article",      "_id": 4    }  ]}​#可以通过ID批量获取es_db的数据GET /es_db/_mget{  "docs": [    {      "_id": 1    },    {      "_id": 4    }  ]}#简化后GET /es_db/_mget{  "ids":["1", "2"]}​

1.7.2 _msearch

在_msearch中,请求格式和bulk类似。查询一条数据需要两个对象,第一个设置index和type,第二个设置查询语句。查询语句和search相同。如果只是查询一个index,我们可以在url中带上index,这样,如果查该index可以直接用空对象表示。

复制代码
GET /es_db/_msearch{}{"query" : {"match_all" : {}}, "from" : 0, "size" : 2}{"index" : "article"}{"query" : {"match_all" : {}}}​

我就是我,是颜色不一样的烟火。
我就是我,是与众不同的小苹果。

à悟纤学院:https://t.cn/Rg3fKJD

学院中有Spring Boot 相关的课程!点击「阅读原文」进行查看!

SpringBoot视频:http://t.cn/A6ZagYTi

SpringBoot交流平台:https://t.cn/R3QDhU0

SpringSecurity5.0视频:http://t.cn/A6ZadMBe

ShardingJDBC分库分表:http://t.cn/A6ZarrqS

分布式事务解决方案:http://t.cn/A6ZaBnIr

JVM内存模型调优实战:http://t.cn/A6wWMVqG

Spring入门到精通:https://t.cn/A6bFcDh4

大话设计模式之爱你:https://dwz.cn/wqO0MAy7

相关推荐
电商软件开发小辛2 小时前
解析电商本地生活竞争:从我店模式创新到生态协同的进化路径
大数据
2501_924878595 小时前
强光干扰下漏检率↓78%!陌讯动态决策算法在智慧交通违停检测的实战优化
大数据·深度学习·算法·目标检测·视觉检测
做科研的周师兄5 小时前
【机器学习入门】1.2 初识机器学习:从数据到智能的认知之旅
大数据·数据库·人工智能·python·机器学习·数据分析·机器人
007php0077 小时前
Jenkins+docker 微服务实现自动化部署安装和部署过程
运维·数据库·git·docker·微服务·自动化·jenkins
IT毕设梦工厂7 小时前
大数据毕业设计选题推荐-基于大数据的丙型肝炎患者数据可视化分析系统-Hadoop-Spark-数据可视化-BigData
大数据·hadoop·spark·毕业设计·源码·bigdata
阿里云大数据AI技术7 小时前
【跨国数仓迁移最佳实践7】基于MaxCompute多租的大数据平台架构
大数据
阿里云大数据AI技术7 小时前
ODPS 十五周年实录 | Data + AI,MaxCompute 下一个15年的新增长引擎
大数据·python·sql
SelectDB7 小时前
2-5 倍性能提升,30% 成本降低,阿里云 SelectDB 存算分离架构助力波司登集团实现降本增效
大数据·数据库·数据分析
随心............8 小时前
Spark面试题
大数据·分布式·spark
君不见,青丝成雪9 小时前
Flink的CheckPoint与SavePoint
大数据·flink