Skn*_*Skn 2 apache-nifi json-path-expression
我在 NiFi 中使用 EvaluateJsonPath 处理器来指定一个复合主键,用于将我的 JSON 数据写入 elasticsearch。我必须通过连接两个属性来创建一个名为“key”的属性,比如“attr1”和“attr2”。在 EvaluateJsonPath 配置中,我添加了一个值为“${attr1}${attr2}”的属性“key”(我使用这个键来避免 elasticsearch 中的冗余)。但是我收到了类似的错误:'key' is invalid 因为指定的表达式无效:${attr1}${attr2}。
使用 EvaluateJsonPath 处理器连接 json 记录中的 2 个属性的正确语法是什么?
我假设您将该术语attributes
与不同的上下文混合在一起。当我第一次拿起 NiFi 并开始使用 JSON 时,我就是这样做的。为了澄清事情,在这种特殊情况下有两种类型的属性:
filename
,filesize
,mime.type
,等当您添加使用处理器的属性一样UpdateAttribute
,他们被添加到FlowFile即FlowFile的元数据属性不给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"
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您必须EvaluateJsonPath
使用如下所示的新属性配置处理器:
attribute1 : $.attr1
attribute2 : $.attr2
Run Code Online (Sandbox Code Playgroud)
完成后,通过的流文件EvaluateJsonPath
将添加上述两个属性flowfile attributes
,您可以使用 NiFi 表达式(如${attribute1}
. 然后将EvaluateJsonPath
处理器连接到UpdateRecord
处理器,您可以NiFi Expression Language
在 FlowFile JSON 内容的帮助下添加组合复合键。
有用的链接
归档时间: |
|
查看次数: |
9808 次 |
最近记录: |