有什么方法可以自动更新vespa中文档的任何字段。当“ currentTime”>“ expiryTime”时,我必须将“ status”字段更新为0。我不想为此调用任何API。
"fields": {
"expiryTime": 1543503600000,
"currentTime": 1543503400000,
"status" : 1
}
currentTime> expireTime之后,必须将“ status”字段自动更新为1。 “字段”:{
"expiryTime": 1543503600000,
"currentTime": 1543503800000,
"status" : 0
}
答案 0 :(得分:1)
没有此类通用功能-Vespa没有等效的数据库触发器或计划的维护作业。不过,通过使用vespa-visit和Vespa文档处理器非常容易实现自己-选择文档空间以评估并在处理器中实现更新逻辑。
有关删除过期文档的特定情况,请参阅https://docs.vespa.ai/documentation/search-definitions.html#document-expiry
答案 1 :(得分:0)
我不确定当时是否理解您的问题。在您的示例中,您有一个基于时间的检查,该检查有时会变为true,并且您要基于此进行文档更新。
这意味着某种定期运行的作业,进行检查并运行更新(或其他)作业。
Vespa没有引擎来运行作业。您必须自己构建它-说一个cron作业,该作业定期使用部分条件运行vespa-visit,并在匹配的文档上调用一些代码。或者,您可以定期运行搜索以执行相同的操作。
答案 2 :(得分:0)
您还可以使用Java ExecutorService
使用document API从容器内部定期运行更新。我会小心地使用document selection仅执行所需的更新,该Searcher仅与status
应该为0
且尚未匹配的文档匹配。
但是,在您的示例中,字段status
纯粹是从同一文档中的其他字段派生而来的-也许仅在需要时使用docs进行计算才可行吗?