我使用的是版本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。
发布于 2014-08-24 23:43:16
结果发现,由于一个bug,我经常在合法地更新文档。
https://stackoverflow.com/questions/22507455
复制相似问题