Regex 删除所有流文件属性(明确定义的属性除外)

Regex 删除所有流文件属性(明确定义的属性除外),regex,apache-nifi,Regex,Apache Nifi,我想删除给定流文件中的所有属性,但我明确定义要保留的属性除外 给定以下示例流文件属性: name: aaa Place: bbb Host: ccc JsonAttribute: { "A": "a", "B": "b" } data: ddd 我只想保留Host和JsonAttribute 因此,生成的流文件属性应为: Host: ccc JsonAttribute: { "A": "a", "B": "b" } 如何使用NiFi提供的标准处理器实现这一点

我想删除给定流文件中的所有属性,但我明确定义要保留的属性除外

给定以下示例流文件属性:

name: aaa
Place: bbb
Host: ccc
JsonAttribute: {
    "A": "a",
    "B": "b"
}
data: ddd
我只想保留HostJsonAttribute

因此,生成的流文件属性应为:

Host: ccc
JsonAttribute: {
    "A": "a",
    "B": "b"
}
如何使用NiFi提供的标准处理器实现这一点

重命名属性
是否可以使用相同的过程重命名属性?例如,我想保留上述属性,但将JsonAttribute重命名为customName属性。JSON处理器可以过滤您不需要的数据。您可以在此处理器中设置属性正则表达式。

调用Http
处理器中,有一个
属性要发送
属性,您可以在其中定义要在请求中使用的属性

因此,您不需要过滤掉其他处理器中的属性。

UpdateAttribute处理器不仅允许添加/设置流文件属性,还允许您从流文件中删除现有属性

为此,必须将与要删除的所有属性匹配的正则表达式传递给属性
删除属性表达式

在您的情况下,可以使用来匹配除要保留的属性之外的每个属性

^((?!Host)(?!JsonAttribute).)*$
因此不需要额外的处理器

保留主机属性,将JsonAttribute移动到其他属性名称 您还应该能够仅使用单个UpdateAttribute处理器实现第二种行为

只需向处理器添加属性,例如
customName
,并使用NiFiexpressionL语言引用旧属性:

${JsonAttribute}
在这种情况下,还可以简化删除正则表达式,以同时删除JsonAttribute流文件属性:

^((?!Host).)*$

通过将属性设置为Send-->JsonAttribute并进行尝试,但我收到了400个错误请求……这是另一个问题。阅读关于httprequest的内容-它将流文件内容作为正文发送到服务器,将属性作为http头发送到服务器。有没有办法自定义json名称,即代替JsonAttributes:{“a”:“a”,“B”:“B”}-->自定义名称:{“a”:“a”,“B”:“B”}