elasticsearch6 学习之并发控制
环境:elasticsearch6.1.2 kibana6.1.2
并发问题无处不在
一、基于_version 的并发控制
在提交数据前先检查提交数据的version与es中存储的version是否一致,相同则进行更新操作,不同则提示异常信息。
PUT test_index/test_type/1?version=4
{
"test_name":"book",
"test_id":111
}
只有当es中存储的这条数据的version=4的时候才能执行成功。
二、external version(外部version) 的并发控制
es提供了一个feature,就是说,你可以不用它提供的内部_version版本号来进行并发控制,可以基于你自己维护的一个版本号来进行并发控制。例如:你的数据在mysql里也有一version,这个时候,你进行乐观锁并发控制的时候,可能并不是想要用es内部的_version来进行控制,而是用你自己维护的那个version来进行控制。
_version:只有当你提供的version与es中的_version一模一样的时候,才可以进行修改,只要不一样,就报错。
external version: 只有当你提供的version比es中的_version大的时候,才能完成修改。
例如:这有一份version=8的数据
{
"_index": "test_index",
"_type": "test_type",
"_id": "1",
"_version": 8,
"found": true,
"_source": {
"test_name": "book",
"test_id": 111
}
}
使用version_type=external 方式替换数据:
PUT /test_index/test_type/1?version=9&version_type=external
{
"test_name": "update book",
"test_id":111
}
elasticsearch6 学习之并发控制的更多相关文章
- ElasticSearch6学习(1)-安装Elasticsearch
安装准备: 安装Elasticsearch唯一的要求是安装Java8,包括对应的Jdk.其他java9/java10没尝试,考虑兼容问题.我这里只用了java8 安装java8可以参考我之前写的一篇文 ...
- elasticsearch6 学习之安装
安装环境:centos6.5 64位 jdk1.8 elasticsearch6.1.1 一.启动 [root@localhost bin]# ./elasticsearch - ...
- elasticsearch6 学习之批量操作
环境:elasticsearch6.1.2 kibana6.1.2 一.mget批量查询 mget可以将多个请求才能获的数据,合并到一个请求中以节省网络开销. 1.查询同一个索引下,通 ...
- elasticsearch6 学习之基础CURD
环境:elasticsearch6.1.2 kibana6.1.2 基础概念: 1._index元数据 (1)代表一个document存放在哪个index中(2)类似的数据放在一个索引 ...
- elasticsearch6 学习之数据分片
ES: ElasticSearch(简称ES):是一个基于Lucene构建的开源.分布式.RESTful的全文本搜索引擎:它还是一个分布式实时文档存储,其中每个field均是被索引的数据且可被搜索:也 ...
- Elasticsearch学习笔记(八)Elasticsearch的乐观锁并发控制
一.基于_version的乐观锁并发控制 语法:PUT /test_index/test_type/id?version=xxx 更新时带上数据 ...
- Anatomy of a Database System学习笔记 - 事务:并发控制与恢复
这一章看起来是讲存储引擎的.作者抱怨数据库被黑为“monolithic”.不可拆分为可复用的组件:但是实际上除了事务存储引擎管理模块,其他模块入解析器.重写引擎.优化器.执行器.访问方式都是代码相对独 ...
- SQLite的文件锁、并发与pager---(SQLite学习手册(锁和并发控制))
一.概述: 在SQLite中,锁和并发控制机制都是由pager_module模块负责处理的,如ACID(Atomic, Consistent, Isolated, and Durable).在含有数据 ...
- Oracle并发控制、事务管理学习笔记
(a)基本概念 锁的2种最基本.最简单的类型:排他锁(eXclusive lock,即X锁).共享锁(Share lock,即S锁). 不同级别的锁定协议及其作用: 申请的锁 及其作用 锁定协议 修改 ...
随机推荐
- mybatis学习(一)-------XML 映射配置文件详解
XML 映射配置文件 MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置(settings)和属性(properties)信息.文档的顶层结构如下: configuration 配 ...
- Android studio Error occurred during initialization of VM 问题解决
最近开发导入其他Android项目遇见的问题,如下图: 解决办法: 将org.gradle.jvmargs=的值该为521(堆内存分配过高导致) 备忘,希望能帮助到大家
- Memached、Redis、Mongodb的区别
性能 • 性能都很高,redis和memached差不多 > Mongodb 操作 • Memached:数据结构单一,只有key/value数据结构 • Redis有五种数据类型 ...
- Java 的JAR包、EAR包、WAR包区别
一.WAR包 WAR(Web Archive file) 网络应用程序文件,是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件.WAR专用于Web方面.大部分的JAVA WEB工程,都是打成W ...
- 关于python中的tkinter模块
python2.7和python3.6中的tkinter是两个包,不会自动升级,假如在fedora28做开发的话, 错误:用import Tkinter /import tkinter /import ...
- prometheus-operator 监控 Rabbitmq集群
首先我们监控服务需要知道prometheus-operator是如何去工作的,才好去写相关的yaml配置,这里我划分成了5个部分,如果容器服务本身就以k8s来编排的,那就只需要三步,这里因为我的rab ...
- 三羊献瑞:next_permutation()
三羊献瑞 观察下面的加法算式: 祥 瑞 生 辉 + 三 羊 献 瑞------------------- 三 羊 生 瑞 气 (如果有对齐问题,可以参看[图1.jpg]) 其中,相同的汉字代 ...
- word2vec入门理解的博客整理
深度学习word2vec笔记之基础篇 https://blog.csdn.net/mytestmy/article/details/26961315 深度学习word2vec笔记之算法篇 https: ...
- Ruby知识点三:运算符
1.逻辑运算符 (1)条件1 || 条件2 条件1为假时,才需判断条件2 (2)条件1 && 条件2 条件1为真时,才需判断条件2 2.范围运算符 (1)x..y 从x到y,包括y ...
- 什么是mvc模式
MVC是一个架构,或者说是一个设计模式,它就是强制性使应用程序的输入,处理和输出分开.将一个应用程序分为三个部分:Model,View,Controller. 原理图: 分析: Model 模型(完成 ...