Обновление документа в процессоре на основе условия - PullRequest
0 голосов
/ 05 декабря 2018
{
  "status":1,
  "expire":15349870000,
  "detail1":"test1",
  "detail2":"test2"
}
{
  "status":0,
  "expire":15349870000,
  "detail1":"test1",
  "detail2":"test2"
}

У меня есть два разных документа одного типа данных, я хочу обновить статус, detail1 и detail2 при условиях

if (status == 0 и expire> now ()), то status = 1и detail1 = "good"

if (status == 1 и expire> now ()) then status = 2 и detail2 = "bad"

Но все это я хочу сделать в процессоре,Так, как я могу применить проверку в процессоре, поскольку я не могу получить значение полей в процессоре?

@Override
    public Progress process(Processing processing) {
        for (DocumentOperation op : processing.getDocumentOperations()) {
            if (op instanceof DocumentUpdate) {
                DocumentUpdate documentUpdate = (DocumentUpdate) op;

if(?){
documentUpdate.addFieldUpdate(FieldUpdate.createAssign(documentUpdate.getDocumentType().getField("detail1"), new StringFieldValue("good")));
}
else if(?){
documentUpdate.addFieldUpdate(FieldUpdate.createAssign(documentUpdate.getDocumentType().getField("detail2"), new StringFieldValue("bad")));
}
            }

        }
        return Progress.DONE;
    }

Пожалуйста, помогите!

1 Ответ

0 голосов
/ 05 декабря 2018

Вы работаете только с операциями с документом UPDATE (если установлен экземпляр DocumentUpdate).У вас нет доступа к полям исходного документа, хранящимся в индексе, а есть только те обновления, которые являются частью DocumentUpdate.Смотри https://docs.vespa.ai/documentation/document-processing-overview.html

...