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 articles

POST /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 用于更新现有文档的部分内容,若文档不存在则返回错误。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

将自定义或第三方库的jar包引入项目中

文章目录 1.背景2.实现 1.背景 个人项目中引入了某个免费版框架有字数限制,我们业务需要生成字数很多,超过了限制,现在要引入自定义的jar解决问题。 2.实现 在resource文件夹下建lib文件夹 (属于是约定),将自己的jar包放入 然后…

STL格式转换为FBX格式

STL格式与FBX格式简介 STL(Stereo Lithography)文件是一种用于3D打印的文件格式。它是由3D Systems公司开发的一种二进制文件格式,用于立体光刻技术。 FBX格式支持多边形游戏模型、曲线、表面、点组材质。FBX文件格式支持所有主要的三维数据…

VMware虚拟机三种网络工作模式

vmware为我们提供了三种网络工作模式,它们分别是:Bridged(桥接模式)、NAT(网络地址转换模式)、Host-Only(仅主机模式)。 打开vmware虚拟机,我们可以在选项栏的“编辑”下的“虚拟网络编辑器”中看到VMnet0(桥接模式)、VMnet1(仅主机模式)、VMnet8(NAT模式),那…

AI 技术,让洗护行业焕然「衣」新

根据最新的 Location 数据显示,国内目前有 20.79 万家与洗衣服务相关的企业。其中超过 80% 仍然是传统的夫妻店模式,即前店收衣后店洗衣的小型洗衣店。这种模式通常规模较小,服务范围有限,主要依赖于店主的个人经营。 另外 20% 企…

Hadoop集群(HDFS集群、YARN集群、MapReduce​计算框架)

一、 简介 Hadoop主要在分布式环境下集群机器,获取海量数据的处理能力,实现分布式集群下的大数据存储和计算。 其中三大核心组件: HDFS存储分布式文件存储、YARN分布式资源管理、MapReduce分布式计算。 二、工作原理 2.1 HDFS集群 Web访问地址&…

HDR视频技术之十:MPEG 及 VCEG 的 HDR 编码优化

与传统标准动态范围( SDR)视频相比,高动态范围( HDR)视频由于比特深度的增加提供了更加丰富的亮区细节和暗区细节。最新的显示技术通过清晰地再现 HDR 视频内容使得为用户提供身临其境的观看体验成为可能。面对目前日益…

精准提升:从94.5%到99.4%——目标检测调优全纪录

🚀 目标检测模型调优过程记录 在进行目标检测模型的训练过程中,我们面对了许多挑战与迭代。从初始模型的训练结果到最终的调优优化,每一步的实验和调整都有其独特的思路和收获。本文记录了我在优化目标检测模型的过程中进行的几次尝试&#…

Hadoop中MapReduce过程中Shuffle过程实现自定义排序

文章目录 Hadoop中MapReduce过程中Shuffle过程实现自定义排序一、引言二、实现WritableComparable接口1、自定义Key类 三、使用Job.setSortComparatorClass方法2、设置自定义排序器3、自定义排序器类 四、使用示例五、总结 Hadoop中MapReduce过程中Shuffle过程实现自定义排序 一…

论文《Vertical Federated Learning: Concepts, Advances, and Challenges》阅读

论文《Vertical Federated Learning: Concepts, Advances, and Challenges》阅读 论文概况纵向联邦VFL框架介绍问题定义VFL 训练协议 对通信效率的优化对性能的优化自监督方案(Self-Supervised Approaches)半监督方案(Semi-Supervised Approa…

【Rust自学】4.5. 切片(Slice)

4.5.0. 写在正文之前 这是第四章的最后一篇文章了,在这里也顺便对这章做一个总结: 所有权、借用和切片的概念确保 Rust 程序在编译时的内存安全。 Rust语言让程序员能够以与其他系统编程语言相同的方式控制内存使用情况,但是当数据所有者超…

WEB入门——文件上传漏洞

文件上传漏洞 一、文件上传漏洞 1.1常见的WebShell有哪些?1.2 一句话木马演示1.2 文件上传漏洞可以利用需满足三个条件1.3 文件上传导致的危害 二、常用工具 2.1 搭建upload-labs环境2.2 工具准备 三、文件上传绕过 3.1 客户端绕过 3.1.1 实战练习 :upl…

【NLP高频面题 - Transformer篇】Transformer的位置编码是如何计算的?

【NLP高频面题 - Transformer篇】Transformer的位置编码是如何计算的? 重要性:★★★ NLP Github 项目: NLP 项目实践:fasterai/nlp-project-practice 介绍:该仓库围绕着 NLP 任务模型的设计、训练、优化、部署和应用…

[react 3种方法] 获取ant组件ref用ts如何定义?

获取ant的轮播图组件, 我用ts如何定义? Strongly Type useRef with ElementRef | Total TypeScript import React, { ElementRef } from react; const lunboRef useRef<ElementRef<typeof Carousel>>(null); <Carousel autoplay ref{lunboRef}> 这样就…

模型优化之知识蒸馏

文章目录 知识蒸馏优点工作原理示例代码 知识蒸馏优点 把老师模型中的规律迁移到学生模型中&#xff0c;相比从头训练&#xff0c;加快了训练速度。另一方面&#xff0c;如果学生模型的训练精度和老师模型差不多&#xff0c;相当于得到了规模更小的学生模型&#xff0c;起到模…

职业技能赛赛后心得

这是一位粉丝所要求的&#xff0c;也感谢这位粉丝对我的支持。 那么本篇文章我也是分成四个部分&#xff0c;来总结一下这次赛后心得。 赛中问题 那么这里的赛中问题不会只包含我所遇到的问题&#xff0c;也会包含赛中其他选手出现的问题。 那么首先我先说一下我在赛中遇到的…

基于springboot+vue实现的博物馆游客预约系统 (源码+L文+ppt)4-127

摘 要 旅游行业的快速发展使得博物馆游客预约系统成为了一个必不可少的工具。基于Java的博物馆游客预约系统旨在提供高效、准确和便捷的适用博物馆游客预约服务。本文讲述了基于java语言开发&#xff0c;后台数据库选择MySQL进行数据的存储。该软件的主要功能是进行博物馆游客…

前沿重器[57] | sigir24:大模型推荐系统的文本ID对齐学习

前沿重器 栏目主要给大家分享各种大厂、顶会的论文和分享&#xff0c;从中抽取关键精华的部分和大家分享&#xff0c;和大家一起把握前沿技术。具体介绍&#xff1a;仓颉专项&#xff1a;飞机大炮我都会&#xff0c;利器心法我还有。&#xff08;算起来&#xff0c;专项启动已经…

Dubbo 3.x源码(28)—Dubbo服务发布导出源码(7)应用级服务接口元数据发布

基于Dubbo 3.1&#xff0c;详细介绍了Dubbo服务的发布与引用的源码。 此前我们在Dubbo启动过程的DefaultModuleDeployer#startSync方法中&#xff0c;学习了Dubbo服务的导出exportServices方法和服务的引入referServices方法。 在这两个操作执行完毕之后&#xff0c;将会继续调…

电脑使用CDR时弹出错误“计算机丢失mfc140u.dll”是什么原因?“计算机丢失mfc140u.dll”要怎么解决?

电脑使用CDR时弹出“计算机丢失mfc140u.dll”错误&#xff1a;原因与解决方案 在日常电脑使用中&#xff0c;我们时常会遇到各种系统报错和文件丢失问题。特别是当我们使用某些特定软件&#xff0c;如CorelDRAW&#xff08;简称CDR&#xff09;时&#xff0c;可能会遇到“计算…

深入解读数据资产化实践指南(2024年)

本指南主要介绍了数据资产化的概念、目标和意义&#xff0c;以及实施数据资产化的过程。指南详细阐述了数据资产化的内涵&#xff0c;包括数据资产的定义、数据资产化的目标与意义&#xff0c;并介绍了数据资产化的过程包括业务数据化、数据资源化、数据产品化和数据资本化。 …