当两个进程同时写入时,如何解决ElasticSearch同一个key上的冲突

2023-12-21

我有多个进程同时向ES写入数据,而且两个进程可能同时写入具有不同值的相同键,这导致了如下异常:

"error" : "VersionConflictEngineException[[website][2] [blog][1]:
             version conflict, current [2], provided [1]]",
"status" : 409

我该如何解决上述问题,因为我必须保留多个进程。


VersionConflictEngineException抛出以防止数据丢失。 elasticsearch 中的每个文档都有一个_version每当文档更改时,该数字就会增加。

当您从 ES 查询文档时,响应还包括该文档的版本。当您更新同一文档并提供版本时,具有相同版本的文档预计已存在于索引中。

如果当前版本大于更新请求中的版本,我们现在会得到冲突,HTTP 错误代码为 409 和VersionConflictEngineException

在您当前的情况下,

版本冲突,当前2 https://www.elastic.co/guide/en/elasticsearch/guide/current/optimistic-concurrency-control.html, 假如1 https://www.elastic.co/blog/versioning

ES 中的当前版本是 2,而您的请求中的当前版本是 1,这意味着其他线程已经修改了文档,并且您的更改正在尝试覆盖文档。

如果出现 VersionConflict EngineException,您应该重新获取文档并尝试使用最新的更新版本再次更新。

是否使用版本控制 https://www.elastic.co/blog/versioning / 乐观并发控制 https://www.elastic.co/guide/en/elasticsearch/guide/current/optimistic-concurrency-control.html,取决于应用。如果您可以忍受数据丢失,则可以避免在更新请求中传递版本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当两个进程同时写入时,如何解决ElasticSearch同一个key上的冲突 的相关文章

随机推荐

  • 从包内读取 SSIS 包文件名(包部署)

    我使用包部署模型在 Visual Studio SSDT 2012 中创建了一个 SSIS 包 有没有办法从包内以只读变量或属性的形式访问包的文件名 我没有看到它被列为系统变量 有什么办法可以通过脚本任务吗 我认为您需要检查 System
  • 运行线程时,旋转变换在重绘中无法正常工作

    我一直在努力使这个程序正常工作 尽管我似乎找不到问题所在 这个程序由以下两个类组成 不多也不少 基本上应该在绘图区域中每次单击时绘制一个点 并在第三次单击时连接所有点 我仍然需要努力让它变得更漂亮 更准确 但这部分是有效的 不起作用的是应该
  • Firebase 时间戳返回错误日期 - Javascript

    我正在尝试从 firestore 获取时间戳值 使用 Firebase 函数 并且我已经使用时间戳的 toDate 方法和矩库在本地成功完成了此操作 moment doc data EndDate toDate 但是 当我将代码部署到 fi
  • UIAlertViewDelegate 和更多警报窗口

    我有实现 UIAlertViewDelegate 的控制器 在实施中我有 void alertView UIAlertView alertView clickedButtonAtIndex NSInteger buttonIndex 方法
  • jQuery 远程验证与服务器生成的错误消息

    我正在使用 Validation jQuery 插件来进行一些验证 我有一项服务现在返回 真 和 假 一切都很好 但是 我使用的错误消息是 该名称已被占用 我希望错误消息是 That name is already a href item
  • 为什么针对旧版本框架时会编译 .NET 4.6 特定代码? [复制]

    这个问题在这里已经有答案了 我有一个针对旧版本 NET 框架 NET 4 5 2 的项目 我安装了 Visual Studio 2015 因此我的计算机上安装了 NET 4 6 我注意到 如果我使用 NET 4 6 C 6 中发布的 C 语
  • 百度地图在安全页面上的实现

    我们正在确保中国网站的商店定位器页面安全 但问题是百度 URL自动重定向到 http url 当我点击上面的 URL 时https api map baidu com https api map baidu com 在浏览器中显示以下代码
  • 与函数式编程中的“fold”函数等效的“pythonic”是什么?

    在 Haskell 中实现如下目标的最惯用的方法是什么 foldl 0 1 2 3 4 5 gt 15 或者 Ruby 中的等价物 1 2 3 4 5 inject 0 m x m x gt 15 显然 Python 提供了reduce函数
  • 保存到数据库后 React Redux 存储状态更新过程

    我的问题是概念性的 基于这篇文章中概述的问题 React Redux 更新数据库后捕获更新的存储状态 https stackoverflow com questions 48695120 我认为不需要任何代码来理解或能够回答它 但如果没有的
  • Asp.Net - 什么是 <%$?

    我现在应该知道这一点 但我不知道 而且出于某种原因 我在谷歌上找不到答案 所以我想我应该在这里尝试一下 我知道相当于Response Write 而且我见过用于数据绑定 然而 今天我注意到一些新的东西 尽管我可以看到它在做什么 但我正在寻找
  • Android Studio:我的项目视图看起来不同

    我已经在 Android Studio 中处理一个项目几个星期了 今天打开一看 突然项目结构全乱了 通常 它看起来像这样 标准项目结构 http unhackathon org springboard projects img filest
  • h2o-xgboost 支持多CPU 吗?

    是否有允许运行的配置H2OXGBoostEstimator在多线程中 而不是在具有一个 CPU 的最小配置中 使用 h2o 版本 3 15 0 4035 H2O 上的 xgboost 实现是多线程的 与 H2O 支持的所有其他算法一样 但它
  • 32位应用程序是什么意思?

    我不确定 16 位或 32 位应用程序是什么意思 16 位应用程序是不需要超过 2 16 字节内存空间的应用程序吗 这个16位是指应用程序的最大大小吗 这意味着应用程序已针对具有 16 位内存寻址或 32 位内存寻址的处理器进行编译 64
  • 如何在 EclipseLink 中启用编织?

    在部署实体中具有延迟获取的应用程序时 我在 GlassFish 终端上收到以下警告 警告 恢复延迟设置OneToOne or ManyToOne属性 zoneTable 对于实体类 class entity ZoneCharge 因为编织未
  • 为什么某些 CSS 属性不应用于 a:visited? [复制]

    这个问题在这里已经有答案了 我的网站有一些链接样式 CSS 如下 a link font family Verdana Tahoma Geneva sans serif text decoration none color 0676b3 a
  • Java:“xx”.equals(变量)比variable.equals(“xx”)更好,真的吗?

    我正在审查最佳实践手册和推荐编码java 我认为这是值得怀疑的 推荐 String variable xx equals variable OK variable equals xx Not recomended 因为可以防止出现不受控制的
  • 单元测试中的静态类/方法/属性,是否停止

    如果不引入同样不可测试的包装器就无法对其进行测试 是否应该在单元测试开发环境中使用静态类 方法 属性 另一种情况是 当在单元测试目标中使用静态成员时 无法模拟静态成员 因此 在测试单元测试目标时 您必须测试静态成员 您希望在静态成员执行计算
  • 如何指定 Doctrine 装置的数据库连接?

    我在用交响乐4我有一个CI管道将我的应用程序部署到开发服务器 使用Doctrine功能 我可以使用执行数据库迁移 db configuration option bin console doctrine migrations migrate
  • 在 Visual Studio 2017 中使用 LSTM 层创建 keras 模型时出现 NotImplementedError

    我的代码是 import tensorflow as tf keras model tf keras Sequential tf keras layers Embedding 1000 16 tf keras layers LSTM 32
  • 当两个进程同时写入时,如何解决ElasticSearch同一个key上的冲突

    我有多个进程同时向ES写入数据 而且两个进程可能同时写入具有不同值的相同键 这导致了如下异常 error VersionConflictEngineException website 2 blog 1 version conflict cu