根据条件更新处理器中的文档

时间:2018-12-05 06:56:26

标签: vespa

{
  "status":1,
  "expire":15349870000,
  "detail1":"test1",
  "detail2":"test2"
}
{
  "status":0,
  "expire":15349870000,
  "detail1":"test1",
  "detail2":"test2"
}

我有两个具有相同数据类型的不同文档,我想根据条件更新状态detail1和detail2

if(status == 0并过期> now()),然后status = 1和detail1 =“好”

if(status == 1并过期> now()),然后status = 2且detail2 =“坏”

但是我要在Processor中完成所有这些操作。那么,由于无法获取处理器中的字段值,如何在处理器中应用检查?

@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 :(得分:3)

您仅对UPDATE文档操作进行操作(如果为DocumentUpdate的op instance)。您无权访问存储在索引中的原始文档字段,而只能访问属于DocumentUpdate的更新。参见https://docs.vespa.ai/documentation/document-processing-overview.html