我假设您将该术语attributes
与不同的上下文混合在一起。当我第一次拿起 NiFi 并开始使用 JSON 时,我就这样做了。为了澄清事情,在这种特殊情况下有两种类型的属性:
- FlowFile 属性- 这些属性有点像FlowFile 的元数据,例如,
filename
,filesize
等mime.type
。当您使用处理器添加属性时,就像UpdateAttribute
它们被添加到 FlowFile 的元数据中一样,即 FlowFile 属性而不是FlowFile 内容本身.
- JSON 属性- 这些是 FlowFile 内容中的字段。例如:
Name
这里是一个属性->{ "Name" : "Smith, John"}
话虽如此,使用类似的表达式${projectName}, ${filename}
是针对FlowFile attributes
. 这种语法称为 NiFi 表达式语言。它们不会根据FlowFile 的内容进行评估。EvaluateJsonPath
采用 JSON 路径表达式,例如$.Name
例如,假设您在 FlowFile 内容中有以下 JSON 文档:
{
"attr1": "some value for attr1",
"attr2": "some value for attr2"
}
在这种情况下,您必须EvaluateJsonPath
使用如下所示的新属性配置处理器:
attribute1 : $.attr1
attribute2 : $.attr2
完成后,通过 的流文件EvaluateJsonPath
将添加上述两个属性flowfile attributes
,您可以使用 NiFi 表达式(如${attribute1}
. 然后将EvaluateJsonPath
处理器连接到处理器,您可以在其中借助FlowFile JSON 内容UpdateRecord
添加组合的复合键。NiFi Expression Language
有用的链接