首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ElasticSearch -在没有指定版本的情况下最后写win行为

ElasticSearch -在没有指定版本的情况下最后写win行为
EN

Stack Overflow用户
提问于 2016-10-25 05:56:06
回答 1查看 349关注 0票数 3

如果在应用更新之前对文档进行更改,那么使用update API对文档的部分更新似乎会失败:

为了避免丢失数据,update API在检索步骤中检索文档的当前_version,并在重新索引步骤中将其传递给索引请求。如果另一个进程在检索和重新索引之间更改了文档,那么_version编号将不匹配,更新请求将失败。

然后,它继续说,您可以提供retry_on_conflict,如果确实发生冲突,它将重试写:

对于许多部分更新的使用,文档被更改并不重要. 这可以通过将retry_on_conflict参数设置为失败前更新应该重试的次数来自动完成;它默认为0。

因此,如果我在不提供update字段的情况下,使用retry_on_conflict为3的retry_on_conflict API,那么ES将在内部失败一次(如果确实发生冲突),然后重试并重写与其冲突的值?

看起来是这样,因为

默认情况下,...the更新API采用最后写赢的方法。

来源:conflicts

注:我使用的是ES 1.5

EN

回答 1

Stack Overflow用户

发布于 2016-10-25 06:18:48

是的,就是这样。关于retry and overwrites the value that it was conflicting with声明的澄清:冲突与文档的版本(不是文档中的任意字段)发生冲突,让我们明确这一点,这是ES GETing文档与实际编写新(更新)文档之间的内部冲突(这两个操作是_update操作的一部分)。

而且它没有覆盖它与之冲突的值,它是另一个更新操作,一旦版本检查正常,它就会成功,并且,是的,它将更新索引中的文档。

如果您需要确保您的更新按一定顺序进行,则需要使用版本

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40232355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档