gpt4 book ai didi

apache-nifi - Apache NiFi评估jsonpath处理器: JSONPath expression to concatenate 2 attributes

转载 作者:行者123 更新时间:2023-12-02 09:40:06 25 4
gpt4 key购买 nike

我正在 NiFi 中使用 EvaluateJsonPath 处理器来指定一个复合主键,用于将 JSON 数据写入 Elasticsearch。我必须通过连接两个属性(例如“attr1”和“attr2”)来创建一个名为“key”的属性。在 EvaluateJsonPath 配置中,我添加了一个属性“key”,其值为“${attr1}${attr2}”(我使用此键是为了避免 elasticsearch 中的冗余)。但我收到如下错误:“key”无效,因为指定的表达式无效:${attr1}${attr2}。

使用 EvaluateJsonPath 处理器连接 json 记录中的 2 个属性的正确语法是什么?

最佳答案

我假设您将术语“属性”与不同的上下文混合在一起。当我第一次拿起 NiFi 并开始使用 JSON 时,我就这样做了。为了澄清问题,在这种特殊情况下有两种类型的属性:

  1. FlowFile 属性 - 这些属性有点像 FlowFile 的元数据,例如文件名文件大小mime.type 等。当您使用 UpdateAttribute 等处理器添加属性时,它们会添加到 FlowFile 的元数据中,即 FlowFile 属性 FlowFile 内容本身。
  2. JSON 属性 - 这些是 FlowFile 内容中的字段。例如:Name 是这里的一个属性 -> { "Name": "Smith, John"}

话虽如此,使用诸如 ${projectName}、${filename} 之类的表达式是根据 FlowFile 属性 进行评估的。这种语法称为 NiFi 表达式语言。它们不会根据 FlowFile 的内容进行评估。 EvaluateJsonPath 采用 JSON 路径表达式,如 $.Name

例如,假设 FlowFile 内容中有以下 JSON 文档:

{
"attr1": "some value for attr1",
"attr2": "some value for attr2"
}

在这种情况下,您必须使用如下所示的新属性来配置 EvaluateJsonPath 处理器:

attribute1 : $.attr1
attribute2 : $.attr2

完成后,通过 EvaluateJsonPath 的流文件会将上述两个属性添加到 flowfile 属性 中,您可以使用 NiFi 表达式(例如 ${属性1}。然后将 EvaluateJsonPath 处理器连接到 UpdateRecord 处理器,您可以在 NiFi 表达式语言 的帮助下将组合复合键添加到 FlowFile JSON 内容。

有用的链接

关于apache-nifi - Apache NiFi评估jsonpath处理器: JSONPath expression to concatenate 2 attributes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51820430/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com