锁定特定文档以在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中进行编辑的主要内容,如果未能解决你的问题,请参考以下文章

检索 Solr 查询中的特定字段?

检索Solr查询中的特定字段?

Hue, Solr - 搜索词的自动填充

solr 排序与文档分数计算

Solr 高亮是不是还可以指示返回的片段在原始字段中的位置或偏移量?

如何在不锁定活动方向的情况下锁定片段方向?