为什么我的天真Elasticsearch更新经常因文档版本冲突而失败?

时间:2014-03-19 13:30:03

标签: elasticsearch

我正在使用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。

1 个答案:

答案 0 :(得分:0)

事实证明,由于存在错误,我只是非常频繁地更新文档。