当前位置: 首页 > news >正文

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.mrgr.cn/news/81273.html

相关文章:

  • 【AscendC】ReduceSum中指定workLocal大小时如何计算
  • 今日总结 2024-12-24
  • 图像的方差介绍
  • VSCode如何修改默认扩展路径和用户文件夹目录到D盘
  • 常用网络协议简述
  • GitLab的安装与卸载
  • MQTT协议在树莓派上的安全性和性能测试及其在物联网应用中的应用
  • Dubbo 3.x源码(28)—Dubbo服务发布导出源码(7)应用级服务接口元数据发布
  • 物理层知识要点
  • 论如何优雅地“扒“C代码的底裤 - 白盒审计笔记
  • JWT的生成和工作原理
  • 跟踪方案和小语法
  • leetcode 面试经典 150 题:螺旋矩阵
  • ffmpeg之显示一个yuv照片
  • 对称二叉树
  • ffmpeg之播放一个yuv视频
  • 连续自成核退火热分级(SSA)技术表征共聚聚丙烯(PP)分子链结构
  • pytorch MoE(专家混合网络)的简单实现。
  • 国内RPA产品对比
  • 【笔记】学校教的SSH:远程连接到另一个电脑 并对其进行操作
  • 3D视觉坐标变换(像素坐标转换得到基于相机坐标系的坐标)
  • 自然语言编写的prompt为啥比不上编程语言prompt高效?
  • shiro注入filter内存马(绕过长度限制)
  • 武汉做网站优化推广效果的科学评估方法
  • Dubbo简单总结
  • 工业相机镜头选型知识详解