我使用的是Elasticsearch 7.9.0
我非常频繁地更新文档。所以我得到了下面的异常
Elasticsearch exception [type=version_conflict_engine_exception, reason=[111]:版本冲突,required seqNo [4348], primary term[2]。当前文档有seqNo[4427]和primary term [2]]
那么我在每次更新之间设置了1秒的延迟。(我不能给更多)
但是问题仍然存在。我们如何解决这个问题?请帮帮我。谢谢。
这个问题是因为elasticsearch中文档的版本控制而发生的。此特性的存在是为了防止同时运行的任务对相同文档进行并发更改。当您尝试更新已被其他任务更新的文档时,可能会遇到此问题。
如果你想通过你的更新来跟踪文档的更新过程,你可能想通过elastic使用任务管理API: https://www.elastic.co/guide/en/elasticsearch/reference/current/tasks.html
您可能还想检查索引API的文档,因为它进一步解释:https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-index_.html
我在OpenSearch
配置中收到了几乎相同的错误,但这不是由于过于频繁的更新,如OP的情况。
在我的例子中,我无意中试图更新域中现有的Role
。我的请求是试图创建一个"新的"Role
,而它已经存在。当我尝试这样做时,我收到了错误。
我的决议是创建一个Role
与一个全新的名称,然后更新它。