代码之家  ›  专栏  ›  技术社区  ›  Skn

Apache NiFi evaluatejsonpath处理器:连接2个属性的JSONPath表达式

  •  1
  • Skn  · 技术社区  · 6 年前

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

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

    2 回复  |  直到 6 年前
        1
  •  4
  •   Sivaprasanna Sethuraman    6 年前

    我想你把这个词弄混了 attributes 有不同的背景。当我第一次拿起NiFi并开始使用JSON时,我就这么做了。为了澄清问题,在这种特殊情况下有两种属性:

    1. 流文件属性 元数据 流文件的,比如 filename filesize , mime.type ,等等,当您使用如下处理器添加属性时 UpdateAttribute 流文件内容本身。
    2. JSON属性 Name 是此处的属性-> { "Name" : "Smith, John"}

    ${projectName}, ${filename} 根据 FlowFile attributes 不会的 EvaluateJsonPath 采用JSON路径表达式,如 $.Name

    例如,假设流文件内容中包含以下JSON文档:

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

    在这种情况下,必须配置 EvaluateJsonPath

    attribute1 : $.attr1
    attribute2 : $.attr2
    

    一旦完成,通过 EvaluateJsonPath 将以上两个属性添加到 flowfile attributes ${attribute1} . 然后连接 EvaluateJsonPath 处理器到 UpdateRecord 处理器,您可以在其帮助下添加组合组合键 NiFi Expression Language 流文件JSON内容。

    有用的链接

        2
  •  1
  •   mattyb    6 年前

    EvaluateJsonPath需要一个JSONPath语句,在本例中,您希望获取两个属性,并使用NiFi表达式语言从中创建一个属性。如果是这样,那么UpdateAttribute应该是您想要的。如果您希望将组合键插入到内容中,那么UpdateRecord应该是您想要的。