【问题标题】:How to correctly rollback commit with Solr's DirectUpdateHandler2?如何使用 Solr 的 DirectUpdateHandler2 正确回滚提交?
【发布时间】:2016-12-06 20:52:50
【问题描述】:

在 Solr 5.5(以嵌入式模式启动)中,我正在创建一些文档,提交它们,然后我试图回滚我的最后一次提交。这是我在代码中调用的内容:

UpdateHandler updateHandler = core.getUpdateHandler()
... // some docs
UpdateHandler#addDoc
UpdateHandler#commit 

检查索引 - 一切正常,索引包含所有文档。

但是当我打电话给UpdateHandler#rollback 并检查索引时 - 什么都没有改变......

有什么问题?回滚后我应该提交吗?

【问题讨论】:

    标签: java solr lucene


    【解决方案1】:

    Solr 提交不是这样工作的。提交将 pending 文档写入索引。回滚会丢弃自上次提交以来的 pending 文档,而不是提交它们。回滚不会撤消最后一次提交。

    一旦您提交,您就会说“就是这样,我们走吧”,Solr 会更新索引并使新文档可搜索。

    据我所知,这也是提交和回滚在大多数 RDBMS 中的工作方式。

    【讨论】:

    • 好的,谢谢!最后我已经阅读了javadoc :) 但是,无论如何,如何删除最后一次提交?这段代码会是什么样子?
    • 你不能删除最后一次提交。哪有这回事。如果您想避免提交并丢弃已添加(但未提交)的文档,则可以发出回滚。
    【解决方案2】:

    至少在可行的情况下,您可以通过编程方式删除您的最后一次提交。因此,如果您刚刚插入了一个唯一 ID 为 1234567 的文档,则删除具有该 ID 的文档。不是一个很好的解决方案,但我在寻找更好的解决方案时遇到了问题。如果你找到我的朋友,请告诉我

    【讨论】:

      猜你喜欢
      • 2020-04-13
      • 1970-01-01
      • 2021-03-07
      • 2011-04-23
      • 2013-05-27
      • 2015-08-04
      • 2012-06-22
      • 1970-01-01
      • 2020-05-24
      相关资源
      最近更新 更多