我正在使用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。
答案 0 :(得分:0)
事实证明,由于存在错误,我只是非常频繁地更新文档。