ApacheNIFI:UpdateRecord替换子值
我试图使用UpdateRecord 1.9.0处理器修改JSON,但它并没有按照我的要求替换这些值 这是源消息ApacheNIFI:UpdateRecord替换子值,apache,replace,apache-nifi,Apache,Replace,Apache Nifi,我试图使用UpdateRecord 1.9.0处理器修改JSON,但它并没有按照我的要求替换这些值 这是源消息 { "type": "A", "ids": [{ "id": "1", "value": "abc" }, { "id": "2", "value": "def" }, { "id": "3",
{
"type": "A",
"ids": [{
"id": "1",
"value": "abc"
}, {
"id": "2",
"value": "def"
}, {
"id": "3",
"value": "ghi"
}
]
}
以及所需的产量
{
"ids": [{
"userId": "1",
}, {
"userId": "2",
}, {
"userId": "3",
}
]
}
我已经按照如下方式配置了处理器
读者:
架构注册表:
作者:
它可以工作,输出是一个JSON,没有字段“type”,id有字段“userId”,而不是“id”和“value”
为了填充userId的值,我定义了替换策略和要替换的属性:
但结果是错误的。用户id始终由数组中最后一个元素的id填充:
{
"ids": [{
"userId": "3"
}, {
"userId": "3"
}, {
"userId": "3"
}
]
}
我认为表达式的值是可以的,因为如果我尝试只替换一条记录,它就可以正常工作(/ids[0]/userId,…id
)
Nifi文档有一个非常类似的示例(示例3):
但这对我不起作用
我做错了什么
谢谢最后,我使用了JoltJSONTransform处理器,而不是UpdateRecord 模板:
[
{
"operation": "shift",
"spec": {
"ids":{
"*":{
"id": "ids[&1].userId"
}
}
}
}
]
比更新记录更容易