如何将 POST 查询的特定值替换为 InvokeHTTP?
How to substitute particular values of POST query for InvokeHTTP?
我有以下处理器序列:
我使用 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
而不是空字符串。
更好的方法是什么?
您可以在 ReplaceText 中使用 NiFi Expression Language。假设您有 4 个属性 field.1 到 field.4,您可以将整个文本替换为以下内容:
{
"size": 0,
"query": {
"bool": {
"filter": [
{"term": {"Field1": "${field.1}"}},
{"term": {"Field2": "${field.2}"}},
{"term": {"Field3": "${field.3}"}},
{"term": {"Field4": "${field.4}"}}
]
}
},
"aggs": {
"range": {
"date_range": {
"field": "Datetime",
"ranges": [
{
"from": "2017-02-17T16:00:00Z||-1H/H",
"to": "2017-02-17T16:00:00Z||/H"
}
]
}
}
}
}
您可以使用ReplaceText
使用正则表达式来匹配字段定义并将它们替换为属性的值。不幸的是,将 Expression Language 参数化为重复每个数字会有点棘手,因此最好明确定义它们:
- 搜索值:
"Field1"\: ""
- 替换值:
"Field1": "${field1}"
我有以下处理器序列:
我使用 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
而不是空字符串。
更好的方法是什么?
您可以在 ReplaceText 中使用 NiFi Expression Language。假设您有 4 个属性 field.1 到 field.4,您可以将整个文本替换为以下内容:
{
"size": 0,
"query": {
"bool": {
"filter": [
{"term": {"Field1": "${field.1}"}},
{"term": {"Field2": "${field.2}"}},
{"term": {"Field3": "${field.3}"}},
{"term": {"Field4": "${field.4}"}}
]
}
},
"aggs": {
"range": {
"date_range": {
"field": "Datetime",
"ranges": [
{
"from": "2017-02-17T16:00:00Z||-1H/H",
"to": "2017-02-17T16:00:00Z||/H"
}
]
}
}
}
}
您可以使用ReplaceText
使用正则表达式来匹配字段定义并将它们替换为属性的值。不幸的是,将 Expression Language 参数化为重复每个数字会有点棘手,因此最好明确定义它们:
- 搜索值:
"Field1"\: ""
- 替换值:
"Field1": "${field1}"