锁定特定文档以在Solr中进行编辑

问题描述 投票:0回答:1

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

solr lucene solrj solrcloud solr6
1个回答
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',那么版本是否匹配或文档是否存在无关紧要。如果存在,它将被覆盖;如果它不存在,它将被添加。

© www.soinside.com 2019 - 2024. All rights reserved.