Elasticsearch-索引的批量操作

ops/2024/12/27 22:48:57/

索引的批量操作

  • 批量查询和批量增删改

    • 批量查询
#批量查询
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/ops/145495.html

相关文章

C++ STL CookBook

目录 std::optional std::any 处理我们的时间 std::optional 下面来介绍一下我们的std::optional这个类&#xff0c;std::optional 是 C17 引入的一个标准库类型&#xff0c;它是一个轻量级的容器&#xff0c;能够表示一个可能没有值的对象。std::optional 用于表示某个值可…

【Java-tesseract】OCR图片文本识别

文章目录 一、需求二、概述三、部署安装四、技术细节五、总结 一、需求 场景需求:是对识别常见的PNG,JPEG,TIFF,GIF图片识别&#xff0c;环境为离线内网。组件要求开源免费&#xff0c;并且可以集成Java生成接口服务。 二、概述 我不做选型对比了,我筛选测试了下Tesseract(v…

docker使用笔记

基本命令 在已有tomcat条件下发布前端项目 查看正在运行的容器 docker ps根据docker容器名进入容器&#xff08;tomcat为示例&#xff09; docker exec -it oaflowtest /gin/bash从服务器复制文件到容器中 需要先把文件上传到虚拟机文件夹中(/home/webapps/oatest) docker …

地理数据库Telepg面试内容整理-数据库设计与性能优化

在开发和维护 Telepg 地理数据库时,合理的数据库设计与性能优化是确保系统稳定、高效运行的关键。以下是针对数据库设计与优化的详细指南。 数据库设计原则 (1) 明确需求 ● 数据类型分析: ○ 确定需要存储的空间数据类型࿰

C语言项目 天天酷跑(上篇)

前言 这里讲述这个天天酷跑是怎么实现的&#xff0c;我会在天天酷跑的下篇添加源代码&#xff0c;这里会讲述天天酷跑这个项目是如何实现的每一个思路&#xff0c;都是作者自己学习于别人的代码而创作的项目和思路&#xff0c;这个代码和网上有些许不一样&#xff0c;因为掺杂了…

mac系统升级后Homebrew:Mac os 使用brew工具时报错No remote ‘origin‘

现象 #brew update Warning: No remote origin in /opt/homebrew/Library/Taps/homebrew/homebrew-cask, skipping update! Warning: No remote origin in /opt/homebrew/Library/Taps/homebrew/homebrew-core, skipping update! Warning: No remote origin in /opt/homebrew/…

华为 AI Agent:企业内部管理的智能变革引擎(11/30)

一、华为 AI Agent 引领企业管理新潮流 在当今数字化飞速发展的时代&#xff0c;企业内部管理的高效性与智能化成为了决定企业竞争力的关键因素。华为&#xff0c;作为全球领先的科技巨头&#xff0c;其 AI Agent 技术在企业内部管理中的应用正掀起一场全新的变革浪潮。 AI Ag…

机器学习:opencv图像识别--图片运算、边界、阈值处理、平滑处理

目录 一、图片运算 1.加法 1. 2.add 3.加权相加 2.减法 二、图片边界 三、图像阈值处理 四、图像平滑处理 1.生成椒盐噪声 2.滤波器 1.均值滤波 2.方框滤波 3.高斯滤波 4.中值滤波 一、图片运算 1.加法 1. 直接将图片上每个像素点的值加上给定值或者两张图片…