我有以下处理器序列:
我使用ReplaceText
处理器创建POST查询的主体。此处理器已链接到InvokeHTTP
。
ReplaceText
中的替换值为:
{
"size": 0,
"query": {
"bool": {
"filter": [
{"term": {"Field1": ""}},
{"term": {"Field2": ""}},
{"term": {"Field3": ""}},
{"term": {"Field4": ""}}
]
}
},
"aggs": {
"range": {
"date_range": {
"field": "Datetime",
"ranges": [
{
"from": "2017-02-17T16:00:00Z||-1H/H",
"to": "2017-02-17T16:00:00Z||/H"
}
]
}
}
}
}
在InvokeHTTP
执行查询之前,我需要根据以下内容的值替换Field1
,Field2
,Field3
和Field4
的值。输入FlowFile的实际字段(UpdateAttribute
的输出)。
例如,在输入FlowFile中,Field1
等于ABC
,因此在我的POST查询中Field1
应该等于ABC
而不是空字符串。
最好的办法是什么?
答案 0 :(得分:4)
您可以在ReplaceText中使用NiFi Expression Language。假设您有4个属性field.1到field.4,您可以使用以下内容替换整个文本:
str
答案 1 :(得分:1)
您可以使用ReplaceText
使用正则表达式来匹配字段定义,并将其替换为属性的值。不幸的是,将Expression Language参数化以重复每个数字会有点棘手,因此明确定义它们会更好:
"Field1"\: ""
"Field1": "${field1}"