Elasticsearch-索引的批量操作

server/2024/12/28 13:07:06/

索引的批量操作

  • 批量查询和批量增删改

    • 批量查询
#批量查询
GET product/_search
GET /_mget
{"docs": [{"_index": "product","_id": 2},{"_index": "product","_id": 3}]
}GET product/_mget
{"docs": [{"_id": 2},{"_id": 3}]
}
#SELECT * FROM TABLE WHERE id in()
GET product/_mget
{"ids": [2,3,4]
}GET product/_mget
{"docs": [{"_id": 2,"_source": ["name","price"]},{"_id": 3,"_source": {"include": ["name","price"],"exclude": ["price","type"]}}]
}
GET /_mget
```
  • 批量写入:

    POST /_bulk
    POST /<index>/_bulk
    {"action": {"metadata"}}
    {"data"}
    
POST /_bulk
{ "create": { "_index": "product2",  "_id": "2" }}
{ "name":    "_bulk create 2" }
{ "create": { "_index": "product2",  "_id": "12" }}
{ "name":    "_bulk create 12" }
{ "index":  { "_index": "product2",  "_id": "3" }}
{ "name":    "index product2 "}
{ "index":  { "_index": "product2",  "_id": "13" }}
{ "name":    "index product2" }
{ "update": { "_index": "product2",  "_id": "4","retry_on_conflict" : "3"} }
{ "doc" : {"test_field2" : "bulk test1"} }#加?filter_path=items.*.error  只显示失败的
POST /_bulk?filter_path=items.*.error
{ "delete": { "_index": "product2",  "_id": "1" }}
{ "create": { "_index": "product2",  "_id": "23" }}
{ "name":    "_bulk create 2" }
{ "create": { "_index": "product2",  "_id": "123" }}
{ "name":    "_bulk create 12" }
{ "index":  { "_index": "product2",  "_id": "3" }}
{ "name":    "index product2 " }
{ "index":  { "_index": "product2",  "_id": "13" }}
{ "name":    "index product2" }
{ "update": { "_index": "product2",  "_id": "4","retry_on_conflict" : "3"} }
{ "doc" : {"test_field2" : "bulk test1"} }
注意:​    bulk api对json的语法有严格的要求,除了delete外,每一个操作都要两个json串(metadata和business data),且每个json串内不能换行,非同一个json串必须换行,否则会报错;​    bulk操作中,任意一个操作失败,是不会影响其他的操作的,但是在返回结果里,会告诉你异常日志
  • 索引的操作类型

    • create:如果在PUT数据的时候当前数据已经存在,则数据会被覆盖,如果在PUT的时候加上操作类型create,此时如果数据已存在则会返回失败,因为已经强制指定了操作类型为create,ES就不会再去执行update操作。比如:PUT /pruduct/_create/1/ ( 老版本的语法为 PUT /pruduct/_doc/1/_create )指的就是在索引product中强制创建id为1的数据,如果id为1的数据已存在,则返回失败。

    • delete:删除文档,ES对文档的删除是懒删除机制,即标记删除。(lazy delete原理)

    • index:在ES中,写入操作被称为Index,这里Index为动词,即索引数据为将数据创建在ES中的索引,写入数据亦可称之为“索引数据”。可以是创建,也可以是全量替换

    • update:执行partial update(全量替换,部分替换)

      以上四种操作类型均为写操作。ES中的数据写入均发生在Primary Shard,当数据在Primary写入完成之后会同步到相应的Replica Shard。ES的数据写入有两种方式:单个数据写入和批量写入,ES为批量写入数据提供了特有的API:_bulk。底层原理在我的《Elasticsearch底层原理》有详细介绍

  • 优缺点

    • 优点:相较于普通的Json格式的数据操作,不会产生额外的内存消耗,性能更好,常用于大数据量的批量写入
    • 缺点:可读性差,可能会没有智能提示。
  • 使用场景

    大数据量的批量操作,比如数据从MySQL中一次性写入ES,批量写入减少了对es的请求次数,降低了内存开销以及对线程的占用。


http://www.ppmy.cn/server/153919.html

相关文章

RestTemplate关于https的使用详解

RestTemplate关于https的使用详解 一、restTemplate注入到bean里面。 Configuration public class RestTempleConfig {BeanPrimarypublic RestTemplate restTemplate() {return new RestTemplate();}/*** https 请求的 restTemplate* return* throws Exception*/Beanpublic R…

探索Flink动态CEP:杭州银行的实战案例

摘要&#xff1a;本文撰写自杭州银行大数据工程师唐占峰、欧阳武林老师。将介绍 Flink 动态 CEP的定义与核心概念、应用场景、并深入探讨其技术实现并介绍使用方式。主要分为以下几个内容&#xff1a; Flink动态CEP简介 Flink动态CEP的应用场景 Flink动态CEP的技术实现 Flin…

单词接龙,

单词接龙是一个与我们经常玩的成语接龙相类似的游戏。 现在我们已知一组单词&#xff0c;且给定一个开头的字母&#xff0c;要求出以这个字母开头的最长的“龙”&#xff0c;每个单词最多被使用两次。 在两个单词相连时&#xff0c;其重合部分合为一部分&#xff0c;例如 bea…

SQL Server 新建 用户 登录失败。 (Microsoft SQL Server,错误: 18456)

新建用户后用SQLserver shen身份验证一直提示用户登录用户 登录失败。 (Microsoft SQL Server,错误: 18456)。 问题&#xff1a; 新建标题: 连接到服务器 无法连接到 DESKTOP-GKBXLEE。 其他信息: 用户 ‘’ 登录失败。 (Microsoft SQL Server&#xff0c;错误: 18456) 解…

剑指Offer|LCR 014. 字符串的排列

LCR 014. 字符串的排列 给定两个字符串 s1 和 s2&#xff0c;写一个函数来判断 s2 是否包含 s1 的某个变位词。 换句话说&#xff0c;第一个字符串的排列之一是第二个字符串的 子串 。 示例 1&#xff1a; 输入: s1 "ab" s2 "eidbaooo" 输出: True 解…

下午四点半

客户的员工竟然背着公司开发报表系统&#xff0c;是在密谋什么大事吗&#xff1f; 之前去线下给客户的员工培训&#xff0c;当时我就对这个小姑娘印象很深刻&#xff0c;因为她后面加了我们的技术人员&#xff0c;问了很多问题&#xff0c;不同于从来没有用过低代码平台的人&a…

计算机专业文献检索期末论文

目录 基于 Java 若依框架的项目构建和综述 引言 1 国内外研究现状与分析 1.1 Java 若依框架的应用与发展 1.2 基于若依框架的数据采集与存储 1.3 基于若依框架的数据挖掘算法应用 1.4 基于若依框架的数据挖掘应用案例分析 2 关键问题与挑战 2.1 若依框架性能优化与适配…

基于springboot的论坛管理系统丨源码+数据库+万字文档+PPT

作者简介&#xff1a; 作者&#xff1a;学 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等 文末获取“源码数据库万字文档PPT”&#xff0c;支持远程部署调试、运行安装。 技术框架 开发语言&#xff1a;Java 框架&#xff1a;springbo…