锁定特定文档以在Solr中进行编辑
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了锁定特定文档以在Solr中进行编辑相关的知识,希望对你有一定的参考价值。
有没有办法在Solr6或Solr7中锁定特定文档以进行编辑/删除?例如,我根据其内容阅读文档,我发现它应该被更新或删除。然后我发送更新/删除查询。但是在我阅读文档的那一刻和发送该查询的那一刻之间,我想确保文档没有被其他进程更新或删除 - 为任何编辑“锁定”它。有没有办法做到这一点?
答案
你可以在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',那么版本是否匹配或文档是否存在无关紧要。如果存在,它将被覆盖;如果它不存在,它将被添加。
以上是关于锁定特定文档以在Solr中进行编辑的主要内容,如果未能解决你的问题,请参考以下文章