0

有没有办法自动更新 vespa 中的任何文档字段。让我必须在“currentTime”>“expiryTime”时将“status”字段更新为 0。我不想为此调用任何 API。

"fields": {

                    "expiryTime": 1543503600000,
                    "currentTime": 1543503400000,
                    "status" : 1
                }

在 currentTime > expireTime 之后,“status”字段必须自动更新为 1。“fields”:{

                "expiryTime": 1543503600000,
                "currentTime": 1543503800000,
                "status" : 0
            }
4

3 回答 3

1

没有这样的通用功能 - Vespa 没有数据库触发器或计划维护作业的等价物。但是,通过使用 vespa-visit 和 Vespa 文档处理器,您自己很容易实现 - 选择文档空间来评估和在处理器中实现更新逻辑。

删除过期文档的具体案例参考https://docs.vespa.ai/documentation/search-definitions.html#document-expiry

于 2018-12-03T07:57:14.737 回答
0

我不确定我当时是否理解你的问题。在您的示例中,您有一个基于时间的检查,该检查在某些时候变为真,并且您希望基于此对文档进行更新。

这意味着某种定期运行、检查和运行更新(或其他)作业的作业。

Vespa 没有运行作业的引擎。您必须自己构建它 - 比如说一个定期运行带有部分标准的 vespa-visit 的 cron 作业,并在匹配的文档上调用一些代码。或者您可以定期运行搜索来做同样的事情。

于 2018-12-03T09:42:58.123 回答
0

您还可以使用 Java使用文档 APIExecutorService从容器内部定期运行更新。我会注意仅执行所需的更新,使用仅匹配应该在的文档和尚未匹配的文档的文档选择。status0

但是,在您的示例中,该字段纯粹是从同一文档中的其他字段派生的——也许在需要时使用例如Searcherstatus来计算它是可行的?

于 2018-12-03T10:09:50.987 回答