[英]Why does my naive Elasticsearch update fail frequently with a document version conflict?
我正在使用0.9版,并且我有这种非常幼稚的方法来更新文档,实际上是进行比较和交换:
(仅显示相关代码)
for (int i = 0; i < MAX_RETRY; i++) {
GetResponse get = client.prepareGet().execute().actionGet();
// Assume document already exists
try {
client
.prepareIndex()
.setId(id)
.setSource(newDoc)
.setVersion(get.getVersion())
.execute()
.actionGet();
// Successfully updated
} catch (VersionConflictEngineException e) {
continue; //retry
}
throw UpdateFailedException();
}
该代码适用于大多数更新,但是失败的频率比版本冲突时要高。 奇怪的是,当服务器文档出现故障时,它似乎总是比预期版本+1。 有什么明显的我想念的东西吗?
我了解Elasticsearch具有适当的更新功能,但无法使用此ATM。
事实证明,由于错误,我只是经常合法地更新文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.