文档章节

Elastic 并发更新问题

zgw06629
 zgw06629
发布于 2015/07/31 17:44
字数 306
阅读 269
收藏 1


当并发更新时会有更新冲突,见下面的演示

#!/bin/bash
#clear first
curl -XDELETE 'localhost:9200/test-concurrent-update?pretty'

curl -XPOST 'localhost:9200/test-concurrent-update/type/1?pretty' -d '
{
  "count": 0
}'

#并发执行
for ((i=0; i<10; i++))
do
curl -XPOST 'localhost:9200/test-concurrent-update/type/1/_update?pretty' -d '{
    "script" : "ctx._source.count += 1"
}' &
done

wait
#check result
echo "check final result"
# why must have to sleep some time or cannot query any result ?
sleep 1
curl -XPOST 'localhost:9200/test-concurrent-update/type/_search?pretty' -d '
{
  "query":{"match_all": {}}
}'

执行上述脚本

$ bash  test_concurrent_update 
{
  "acknowledged" : true
}
{
  "_index" : "test-concurrent-update",
  "_type" : "type",
  "_id" : "1",
  "_version" : 1,
  "created" : true
}
{
  "_index" : "test-concurrent-update",
  "_type" : "type",
  "_id" : "1",
  "_version" : 2
}
{
  "error" : "VersionConflictEngineException[[test-concurrent-update][2] [type][1]: version conflict, current [2], provided [1]]",
  "status" : 409
}
{
  "error" : "VersionConflictEngineException[[test-concurrent-update][2] [type][1]: version conflict, current [2], provided [1]]",
  "status" : 409
}
{
  "error" : "VersionConflictEngineException[[test-concurrent-update][2] [type][1]: version conflict, current [2], provided [1]]",
  "status" : 409
}
{
  "error" : "VersionConflictEngineException[[test-concurrent-update][2] [type][1]: version conflict, current [3], provided [2]]",
  "status" : 409
}
{
  "error" : "VersionConflictEngineException[[test-concurrent-update][2] [type][1]: version conflict, current [3], provided [2]]",
  "status" : 409
}
{
  "_index" : "test-concurrent-update",
  "_type" : "type",
  "_id" : "1",
  "_version" : 3
}
{
  "_index" : "test-concurrent-update",
  "_type" : "type",
  "_id" : "1",
  "_version" : 4
}
{
  "error" : "VersionConflictEngineException[[test-concurrent-update][2] [type][1]: version conflict, current [4], provided [2]]",
  "status" : 409
}
{
  "error" : "VersionConflictEngineException[[test-concurrent-update][2] [type][1]: version conflict, current [4], provided [3]]",
  "status" : 409
}
check final result
{
  "took" : 4,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "failed" : 0
  },
  "hits" : {
    "total" : 1,
    "max_score" : 1.0,
    "hits" : [ {
      "_index" : "test-concurrent-update",
      "_type" : "type",
      "_id" : "1",
      "_score" : 1.0,
      "_source":{"count":3}
    } ]
  }
}

期待count最终为10,但实际为3.其他的更新操作均因冲突导致更新失败。

© 著作权归作者所有

zgw06629

zgw06629

粉丝 17
博文 54
码字总数 30471
作品 0
海淀
程序员
私信 提问
Elasticsearch 版本控制version

Elasticsearch版本控制 1、为什么要进行版本控制 日常生产环境中,会频繁的对数据进行相关的操作,那么如何保证数据在多线程操作(有两个或两个以上的人在操作修改同一个数据)情况下的准确性...

菜花_Q
2018/04/23
0
0
elasticsearch搜索引擎相关资料(更新中)

最近需要用到elasticsearch搜索引擎,所以搜集了很多相关资料,先放在这里(未详细整理) 一、步骤总结:(linux环境下) 1. 安装 (1)下载elasticsearch安装包:http://www.elasticsearch....

核桃人
2018/03/08
0
0
ElasticSearch开发问题汇总(不断更新中)

1、Mapping: [译]ElasticSearch数据类型--string类型已死, 字符串数据永生 ElasticSearch动态日期映射 2、Spring Data Elasticsearch: Spring Data Elasticsearch教程...

九州暮云
2018/07/18
0
0
Elasticsearch系列(四)ES数据基本知识

本文转载自:ES数据操作 本章就不详细示例ES数据的基本操作,只记录一些知识点,便于读者阅读后面的章节有帮助; 一、文档及文档元数据 对象(object)是一种语言相关,记录在内存中的的数据结...

淡淡的倔强
02/28
0
0
ES(elasticsearch)搜索引擎

ES(elasticsearch)搜索引擎 0、授人以渔,少走半年弯路! 死磕 Elasticsearch 方法论:普通程序员高效精进的 10 大狠招! 一、Elasitcsearch基础篇 1.1 Elasitcsearch基础认知 1、Elasticse...

Ocean_K
2018/09/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

驰骋工作流引擎-督查督办系统

1.概要说明 督查督办系统信息化平台适用于政府,企事业单位的重点项目跟进,重点工程部署,及各级精神的传达等督查督办性工作。开发设计坚持流程式管理的总体思路,充分体现督查事项立项的规...

孟娟
19分钟前
0
0
阿里靠什么支撑 EB 级计算力?

作者 关涛 阿里云智能事业群 研究员 导读:MaxCompute 是阿里EB级计算平台,经过十年磨砺,它成为阿里巴巴集团数据中台的计算核心和阿里云大数据的基础服务。去年MaxCompute 做了哪些工作,这...

zhaowei121
21分钟前
0
0
mybatis生成代码配置详解

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.o......

事儿爹
23分钟前
0
0
Vuex和表单绑定的一个神级坑再填一遍

vuex有一个很大的缺陷,就是和input输入框的v-model本身是冲突的。 官方文档给出了两种解决方案:https://vuex.vuejs.org/zh/guide/forms.html 一个是使用get和set → 适用于input框比较少的...

LinearLaw
26分钟前
0
0
CPU与GPU的区别

作者讲述的清楚: 我的理解:1 GPU ALU更多 2 Core 更多 3 业务更加专一(主要进行密集计算) 4 缓存区更少 https://www.zhihu.com/question/19903344...

南桥北木
26分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部