Автообновление документа в vespa

Есть ли способ автоматического обновления любого поля документа в vespa. Позволяет обновить поле "status" до 0, когда "currentTime" > "expiryTime". Я не хочу называть какой-либо API для этого.

"fields": {

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

После currentTime > expireTime поле "status" должно быть автоматически обновлено до 1. "fields": {

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

3 ответа

Такой универсальной функции не существует - у Vespa нет эквивалента триггеров базы данных или запланированных заданий обслуживания. Впрочем, реализовать это довольно просто, используя процессоры документов vespa-visit и Vespa - выберите пространство документов для оценки и реализации логики обновления в процессоре.

Для конкретного случая удаления просроченных документов, обратитесь к https://docs.vespa.ai/documentation/search-definitions.html

Вы также можете использовать Java ExecutorService регулярно запускать обновления из своего контейнера, используя API документа. Я бы позаботился о том, чтобы выполнить только необходимые обновления, используя выбор документа, который соответствует только тем документам, где status должно быть 0и где это еще не так.

В вашем примере, однако, поле status получен исключительно из других полей того же документа - возможно, было бы целесообразно просто вычислить его при необходимости, используя, например, Searcher?

Я не уверен, правильно ли я понял ваш вопрос. В вашем примере у вас есть проверка на основе времени, которая в какой-то момент становится истинной, и вы хотите обновить документы на основе этого.

Это подразумевает какую-то работу, которая выполняется регулярно, выполняет проверки и запускает задачи обновления (или что-то еще).

У Vespa нет двигателя для работы. Вы должны создать его самостоятельно - например, задание cron, которое регулярно выполняет vespa-visit с критериями раздела и вызывает некоторый код в соответствующих документах. Или вы можете регулярно выполнять поиск, чтобы сделать то же самое.

Другие вопросы по тегам