ES 版本控制 | 学习笔记

简介: 快速学习 ES 版本控制

开发者学堂课程【ElasticSearch 入门精讲ES 版本控制学习笔记,与课程紧密连接,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/631/detail/9959


ES版本控制


普通关系型数据库使用的是(悲观并发控制(PCC))

当我们在读取一个数据前先锁定这一行,然后确保只有读取到数据的这个线程可以修改这一行数据。

ES 使用的是(乐观并发控制(OCC))

ES 不会阻止某一数据的访问,然而,如果基础数据在我们读取和写入的间隔中发生了变化,更新就会失败,这时候就由程序来决定如何处理这个冲突。它可以市新读取新数据来进行更新

ES 如何实现版本控制(使用es内部版本号)

ES版本控制

1∶首先得到需要修改的文档,获取版本(version))号,也要定位到指定的版本号下面指定索引:

curl-XGET http://localhost:9200/bigdata/product/1

2∶再执行更新操作的时候把更新版本号传过去

curl-XPUT http://localhost:9200/bigdata/product/1?version=1-d(参数)

{'f"name"∶"hodoop",version"∶3}(覆盖)操作

curl-XPOST http://localhost:9200/bigdata/product/1/update?version=3-d'doc":f"name":"apachehadoop","latest_version"∶2.6}(部分更新,是版本号之后,可以调剂再传过去)

如∶

jerry@JANSONO1 data]$ curl-H'Content-Type:application/json'-XPOST 'Http://ANSONO1:9200/bigdata/product/HM9rL2oB300nRXZV6BRB/update?version=2&pretty'-

}

“index":"bigdata),

_type":"product",

"_id*:"HM9rL2oB300nRXZV6BRB",

"_version":3,

"result";"updated",

·shards":{

“total":2, 。

"successful":1,

"failed":0

},

“seq no":6,

3∶如果传递的版本号和待更新的文档的版本号不一致,则会更新失败ES如何实现版本控制(使用外部版本号)

如果你的数据库已经存在了版本号,或者是可以代表版本的时间载。这时就可以在es 的产询 uril 后面添加 version_type=external 来使用这些号码。

注意∶版本号码必须要是大于0小于9223372036854775807(Java中long的最大正值)的整数。

ES 在处理外部版本号的时候,它不再检查 version 是否与请求中指定的数值是否相等,而是检查当前的 version 是否比指定的数值小,如果小,则请求成功。

example:

curl-XPUT'http://localhost:9200/bigdata/product/20?version=10&version type=external'-d'{"name":"flink")

注意∶此处 url 前后的引号不能省略,否则执行的时候会报错

相关文章
|
6月前
|
人工智能 缓存 开发工具
结合企业实践来规范你的Git commit(含插件使用指南)
结合企业实践来规范你的Git commit(含插件使用指南)
结合企业实践来规范你的Git commit(含插件使用指南)
|
JavaScript IDE 前端开发
如何在大型代码仓库中删掉废弃的文件和 exports?
本文是我最近在公司内部写的废弃代码删除工具的一篇思考总结。
|
5月前
|
敏捷开发 测试技术 持续交付
【git分支管理策略】如何高效的管理好代码版本
【git分支管理策略】如何高效的管理好代码版本
464 0
|
6月前
|
数据可视化 开发工具 git
Git代码版本管理入门
Git代码版本管理入门
|
前端开发 Cloud Native Go
《Git进阶:掌握版本控制的高级技巧》
《Git进阶:掌握版本控制的高级技巧》
68 0
|
SQL Shell 开发工具
git版本管理如何使用
git版本管理如何使用
98 0
|
安全 IDE 网络协议
【Git】版本控制之基础用法
进公司毕竟是多人协作的事情,不是你一个人在更改代码,所以必须要会代码管理工具来多人管理代码。(如果一个人干所有人的活当我没说) 作为2023年代码管理工作最为出名的分布式那肯定还是Git。 当然也有其他的,比如SVN等等。 这篇主要讲解的是Git的使用。
104 0
|
测试技术 开发工具 git
Git 结合Git使用Bitbucket进行代码版本管理流程规范与实践
Git 结合Git使用Bitbucket进行代码版本管理流程规范与实践
149 0
|
关系型数据库 MySQL Shell
团队开发中git的基本使用和多人协作合并管理
最近忙于公司内部流程审批系统,团队在我未入职公司前,一直未使用版本控制,导致多数人不会使Git,开发人员对Git不熟练,项目版本控制受阻(开发人员普遍觉得sftp方便); 由我编写开发文档规范: 开发规范文档(包括:Php、Git、Mysql);
132 0