【问题标题】:Lock a specific document for edits in Solr锁定特定文档以在 Solr 中进行编辑
【发布时间】:2019-09-20 09:01:01
【问题描述】:

有没有办法在 Solr6 或 Solr7 中锁定特定文档以进行编辑/删除? 例如,我阅读了一个文档,根据它的内容我认为它应该被更新或删除。然后我发送更新/删除查询。但是在我阅读文档的那一刻和我发送该查询的那一刻之间,我想确保该文档没有被其他进程更新或删除 - “锁定”它以进行任何编辑。有没有办法做到这一点?

【问题讨论】:

    标签: solr lucene solrj solrcloud solr6


    【解决方案1】:

    您可以在 Solr 中使用the optimistic concurrency feature

    实际上,您在请求中包含了来自文档_version_ 字段的值。如果您包含的 _version_ 值与文档中的值不匹配(即文档在您检索后已更新),则更新失败并返回 409 HTTP 错误代码。

    • 客户端读取文档。在 Solr 中,可以检索文档 使用 /get 处理程序确保拥有最新版本。

    • 客户端在本地更改文档。

    • 客户端将更改后的文档重新提交给Solr,例如, 也许与 /update 处理程序有关。

    • 如果存在版本冲突(HTTP 错误代码 409),客户端 重新开始这个过程。

    _version_ 字段中给出的值可以指示您想要的行为:

    如果_version_ 字段中的内容大于“1”(即, '12345'),则文档中的_version_ 必须与_version_ 匹配 在索引中。

    如果_version_字段中的内容等于'1',那么 文件必须简单地存在。在这种情况下,不会发生版本匹配, 但如果文档不存在,更新将被拒绝。

    如果_version_字段中的内容小于'0'(即'-1'), 那么该文件一定不存在。在这种情况下,没有版本匹配 发生,但如果文档存在,则更新将被拒绝。

    如果_version_字段中的内容等于'0',那么它不 无论版本是否匹配或文档是否存在。如果它 存在,将被覆盖;如果它不存在,它将是 已添加。

    【讨论】:

      猜你喜欢
      • 2016-11-04
      • 2013-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-13
      • 2020-03-03
      • 1970-01-01
      相关资源
      最近更新 更多