es 中使用update 、create 、index的区别

文章目录

      • 1. `index` 操作
        • 示例:`index` 操作
        • Bulk 示例中的 `index` 操作:
      • 2. `create` 操作
        • 示例:`create` 操作
        • Bulk 示例中的 `create` 操作:
      • 3. `update` 操作
        • 示例:`update` 操作
        • Bulk 示例中的 `update` 操作:
      • 4. 区别总结
      • 总结

在 Elasticsearch 中, indexupdatecreate 是常用的操作类型,它们用于不同的场景,且具有不同的行为。下面详细解释这三个操作的区别,并提供相关的示例。

1. index 操作

  • 功能index 操作用于插入文档,如果文档的 _id 已经存在,则会覆盖该文档(即进行替换)。
  • 使用场景:适用于需要插入新文档,或者更新已有文档的场景。
  • 注意index 操作是幂等的(idempotent)。即使你多次执行相同的操作,只要文档内容没有变化,最终结果不会受到影响。
示例:index 操作
POST /articles/_doc/1
{"title": "Tech News Today","tags": ["tech", "news", "AI"]
}
  • 如果 _id1 的文档不存在,则会插入一个新的文档。
POST /articles/_search[{"_index" : "articles","_type" : "_doc","_id" : "1","_score" : 1.0,"_source" : {"title" : "Tech News Today","tags" : ["tech","news","AI"]}}
]
  • 如果 _id1 的文档已存在,则会被替换为新的文档。
POST /articles/_doc/1
{"title": "Tech News Today"
}POST /articles/_search[{"_index" : "articles","_type" : "_doc","_id" : "1","_score" : 1.0,"_source" : {"title" : "Tech News Today"}}
]
Bulk 示例中的 index 操作:
{ "index": { "_id": 1 } }
{ "title": "Tech News Today", "tags": ["tech", "news", "AI"] }

2. create 操作

  • 功能create 操作用于插入新文档。如果文档的 _id 已经存在,操作会失败(返回错误)。这意味着该操作只能用于创建新文档,而不能更新或替换已有文档。
  • 使用场景:适用于你想要确保文档不存在时插入文档的情况。比如避免覆盖现有的文档。
示例:create 操作
POST /articles/_doc/1/_create
{"title": "Tech News Today","tags": ["tech", "news", "AI"]
}
  • 如果 _id1 的文档已存在,Elasticsearch 会返回错误,提示该文档已经存在。
{"error" : {"root_cause" : [{"type" : "version_conflict_engine_exception","reason" : "[1]: version conflict, document already exists (current version [2])","index_uuid" : "mu6PYHhxTRSOOOjSZoPmaQ","shard" : "0","index" : "articles"}],"type" : "version_conflict_engine_exception","reason" : "[1]: version conflict, document already exists (current version [2])","index_uuid" : "mu6PYHhxTRSOOOjSZoPmaQ","shard" : "0","index" : "articles"},"status" : 409
}
  • 如果 _id1 的文档不存在,它将会被插入。
Bulk 示例中的 create 操作:
{ "create": { "_id": 1 } }
{ "title": "Tech News Today", "tags": ["tech", "news", "AI"] }

3. update 操作

  • 功能update 操作用于更新已有的文档。如果文档存在,它会更新文档的部分内容;如果文档不存在,则会抛出错误。
  • 使用场景:适用于部分更新文档的场景,特别是当你只需要更新文档的一部分字段时。update 操作不会覆盖整个文档,只会对指定字段进行修改。
示例:update 操作
POST /articles/_doc/1/_update
{"doc": {"tags": ["tech", "news", "AI", "machine learning"]}
}
  • 如果 _id1 的文档存在,tags 字段将会被更新为新的值。
POST /articles/_search[{"_index" : "articles","_type" : "_doc","_id" : "1","_score" : 1.0,"_source" : {"title" : "Tech News Today","tags" : ["tech","news","AI","machine learning"]}}
]
  • 如果 _id1 的文档不存在,Elasticsearch 会返回错误。
DELETE articlesPOST /articles/_doc/1/_update
{"doc": {"tags": ["tech", "news", "AI", "machine learning"]}
}{"error" : {"root_cause" : [{"type" : "document_missing_exception","reason" : "[_doc][1]: document missing","index_uuid" : "B9MrCqCwT5u-GCvgdWB-Rw","shard" : "0","index" : "articles"}],"type" : "document_missing_exception","reason" : "[_doc][1]: document missing","index_uuid" : "B9MrCqCwT5u-GCvgdWB-Rw","shard" : "0","index" : "articles"},"status" : 404
}
Bulk 示例中的 update 操作:
{ "update": { "_id": 1 } }
{ "doc": { "tags": ["tech", "news", "AI", "machine learning"] } }

4. 区别总结

操作类型目标说明示例
index插入或替换文档插入,如果文档已经存在则会被替换。POST /articles/_doc/1
create插入仅在文档不存在时插入文档,如果文档已存在,则返回错误。POST /articles/_doc/1/_create
update更新仅更新文档的一部分内容,文档必须存在。如果文档不存在,则返回错误。POST /articles/_doc/1/_update

总结

  • index 用于插入新文档或替换现有文档。
  • create 用于仅在文档不存在时插入新文档,若文档已存在则返回错误。
  • update 用于更新现有文档的部分内容,若文档不存在则返回错误。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/890611.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3D几何建模引擎Parasolid功能解析

一、什么是Parasolid? Parasolid是由Siemens PLM Software开发的高精度精密几何建模引擎。它全面评估CAD(计算机辅助设计)、CAM(计算机辅助制造)、CAE(计算机辅助工程)、PLM(产品生…

QT开发【常用控件1】-Layouts Spacers

在 Qt 中,布局(Layouts)和间距(Spacers)是创建用户界面的关键组成部分。它们帮助开发者在窗口或对话框中组织和排列控件,以实现灵活和美观的界面设计。 1. 布局(Layouts) 布局是 Q…

flink sink doris

接上文&#xff1a;一文说清flink从编码到部署上线 网上关于flink sink drois的例子较多&#xff0c;大部分不太全面&#xff0c;故本文详细说明&#xff0c;且提供完整代码。 flink doris版本对照表 1.添加依赖 <!--doris cdc--><!-- 参考&#xff1a;"https…

【EthIf-14】EthIfGeneral容器配置-02

1.实际EthIfGeneral的配置实例 关闭DET接口开启发送确认中断开启接收中断主周期接收timeout主周期 2. 代码实例参考 阅读此部分代码,搞清楚代码分为几个section,大概瞄一眼就好,不用深究其含义,只需有一个宏观的层次结构的映像即可。 //Appl/GenData/EthIf_Cfg.h #

修炼内功之函数栈帧的创建与销毁

修炼内功之函数栈帧的创建与销毁 一 前置知识&#xff08;1&#xff09;栈&#xff08;2&#xff09;相关寄存器和汇编指令 二 函数栈帧三 代码演示函数栈帧的创建&#xff08;1&#xff09;代码演示&#xff08;2&#xff09;函数栈帧逐帧分析 四 对开篇问题的解答 相信来CSDN…

QT用Enigmavb 打包成单独exe

QT用这个工具打包成单个exe&#xff0c;然后再用winrar打包成zip可以发给别人 在之前需要用QT的release打包 之前的文章QTrelease打包【非单个exe】 Enigmavb 打包流程&#xff1a; 安装过程&#xff1a; next-》i accept -》选择安装位置 -》next -》Create a desktop ic…

图的最短路径(C++实现图【4】)

目录 1. 最短路径 1.1单源最短路径--Dijkstra算法 代码实现 1.2 单源最短路径--Bellman-Ford算法 代码实现 1.3 多源最短路径--Floyd-Warshall算法 代码实现 1. 最短路径 最短路径问题&#xff1a;从在带权有向图G中的某一顶点出发&#xff0c;找出一条通往另一顶点的最短路径&…

udp tcp协议

文章目录 1. UDP协议1.1 端口号1.2 UDP协议格式1.3 UDP特性1.4 报文的封装 2. TCP协议2.1 TCP协议格式2.2 TCP策略2.2.1 确认应答机制(ACK)序号与确认序号6个标志位序号的理解 2.2.2 超时重传机制2.2.3 连接管理机制三次握手四次挥手理解三次握手理解四次挥手 2.2.4 流量控制2.…

提高保养效率:4S店预约系统的设计与开发

3.1可行性分析 开发者在进行开发系统之前&#xff0c;都需要进行可行性分析&#xff0c;保证该系统能够被成功开发出来。 3.1.1技术可行性 开发该4S店预约保养系统所采用的技术是vue和MYSQL数据库。计算机专业的学生在学校期间已经比较系统的学习了很多编程方面的知识&#xff…

支付域——支付路由设计

摘要 本文深入探讨了支付路由系统的背景、核心作用、设计原则以及业界常见形态。文章详细解析了支付方式咨询、渠道咨询和渠道路由的概念&#xff0c;并介绍了支付路由的规则种类、交易参数、通道属性和常见筛选规则。进一步讨论了基于规则的渠道路由设计、自动化开关的渠道路…

leetcode 面试经典 150 题:螺旋矩阵

链接螺旋矩阵题序号54题型二维数组&#xff08;矩阵&#xff09;解题方法模拟路径法难度中等熟练度✅✅✅ 题目 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3…

保护模式基本概念

CPU 架构 RISC&#xff08;Reduced Instruction Set Computer&#xff09; 中文即"精简指令集计算机”。RISC构架的指令格式和长度通常是固定的&#xff08;如ARM是32位的指令&#xff09;、且指令和寻址方式少而简单、大多数指令在一个周期内就可以执行完毕 CISC&…

突发!!!GitLab停止为中国大陆、港澳地区提供服务,60天内需迁移账号否则将被删除

GitLab停止为中国大陆、香港和澳门地区提供服务&#xff0c;要求用户在60天内迁移账号&#xff0c;否则将被删除。这一事件即将引起广泛的关注和讨论。以下是对该事件的扩展信息&#xff1a; 1. 背景介绍&#xff1a;GitLab是一家全球知名的软件开发平台&#xff0c;提供代码托…

git Force Push失败:unable to access解决方案

git Force Push失败&#xff1a;unable to access 项目场景&#xff1a;问题描述原因分析&#xff1a;解决方案&#xff1a;1、访问github远程仓库&#xff0c;更新推送规则1、打开代码库&#xff0c;点击settings2、在settings中下翻&#xff0c;在Danger Zone中将点击Disable…

工业相机镜头选型知识详解

工业相机在机器视觉、自动化生产和检测等领域扮演着重要角色&#xff0c;而镜头作为工业相机的关键组件&#xff0c;其选型直接影响到成像效果和系统的整体性能。在本篇博客中&#xff0c;我们将详细讲解工业相机镜头选型的相关知识&#xff0c;帮助您在实际应用中选择最合适的…

安装CPU版的torch(清华源)

1、安装指令&#xff1a; pip3 install torch torchvision torchaudio -i https://pypi.tuna.tsinghua.edu.cn/simple2、验证torch是否安装成功 // 使用python验证 import torch print(torch.__version__)能正常打印版本即表示安装成功&#xff0c;如下图

‘pnpm’ 不是内部或外部命令,也不是可运行的程序或批处理文件。

‘pnpm’ 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。 1.情况: npm -v 和 node -v的都正常就是 pnpm-v 无效 检查环境变量也没看出问题 2.分析 没有正确添加环境变量 3.解决 找到npm的全局安装目录 npm list -g --depth 0这里出现了npm的全局安装…

Java 日志类库

Java 日志库是最能体现 Java 库在进化中的渊源关系的&#xff0c;在理解时重点理解日志框架本身和日志门面&#xff0c;以及比较好的时间等。要关注其历史渊源和设计&#xff08;比如桥接&#xff09;&#xff0c;而具体在使用时查询接口即可&#xff0c;否则会陷入 JUL&#x…

聚类之轮廓系数

Silhouette Score&#xff08;轮廓系数&#xff09;是用于评估聚类质量的指标之一。它衡量了数据点与同簇内其他点的相似度以及与最近簇的相似度之间的对比。 公式 对于一个数据点 i&#xff1a; a(i): 数据点 i 到同簇内其他点的平均距离&#xff08;簇内不相似度&#xff…

问题小记-达梦数据库报错“字符串转换出错”处理

最近遇到一个达梦数据库报错“-6111: 字符串转换出错”的问题&#xff0c;这个问题主要是涉及到一条sql语句的执行&#xff0c;在此分享下这个报错的处理过程。 问题表现为&#xff1a;一样的表结构和数据&#xff0c;执行相同的SQL&#xff0c;在Oracle数据库中执行正常&…