仅当新值更大时,才会发生Solr原子字段更新

时间:2017-09-05 21:34:30

标签: javascript solr updates atomic processor

我在Solr中有一个自定义字符串字段,其中包含一个时间戳。我通过原子更新更新了一些具有此字段的文档。例如:

{id:doc1, last_interact:{set:8888} }

现在让我们说doc1存在,并且它的last_interact字段已经有了一个值。 我希望只有当新值大于现有值时才会发生原子更新。因此,例如,如果last_interact的当前值是555,则允许上述更新改变last_interact值,因为它增加了它。但如果当前值为99999,则更新不应更改该值。

如何实现这一目标?

我已经尝试过实现StatelessScriptUpdateProcessorFactory处理器并在函数processAdd(cmd){}中的java脚本文件中应用规则,但尚未成功;因为在这个函数中,我可以访问提交文档的字段,但不能访问现有文档的字段。

1 个答案:

答案 0 :(得分:0)

Solr中没有内置的解决方案。

你可以:

  1. 在发送更新之前,请使用客户端的查询检查该值。
  2. 修改你的UpdateRequestProcessor,只需用查询查找那里的值,没有什么可以阻止你在URP内发出查询。这将是更多的工作,但您的客户端代码不需要担心它。