zoukankan      html  css  js  c++  java
  • 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
    }
  • 相关阅读:
    SCCM 补丁更新 失误排错一例
    Oracle 远程连接 DB配置 连接命令
    反向代理服务器
    用JMF播放音频 例子
    HTML css兼容
    Java国际化
    JBPM 之介绍,使用
    Nginx内核优化引用
    Nginx 学习
    局域网访问VMware虚拟机中的Ubuntu
  • 原文地址:https://www.cnblogs.com/jalja/p/8340404.html
Copyright © 2011-2022 走看看