APACHE NIFI学习之—RouteOnContent

RouteOnContent

描述:

通过正则表达式匹配输入数据流的内容,然后将输入数据流的副本路由到正则表达式相匹配的输出数据流。 正则表达式作为用户自定义的属性添加,并以该属性名称为输出连线,其值为正则表达式所匹配数据流内容。 当用户定义的属性支持属性表达式语言时,其结果为字符串,而不是正则表达式。

标签:

route, content, regex, regular expression, regexp, 路由, 正则, 内容

参数:

如下列表中,必填参数则标识为加粗. 其他未加粗参数,则表示为可选参数。表中同时提到参数默认值设置.

名字默认值允许值列表描述
匹配要求内容必须完全匹配内容必须完全匹配内容包含匹配指定文件的整个内容是否必须与正则表达式完全匹配,或者文件的指定部分(最多为内容缓冲区大小)是否可以包含正则表达式匹配的内容
字符编码UTF-8数据流文件的字符集编码,默认为UTF-8
内容缓存大小1 MB指定用于匹配的数据流内容最大缓存值,超过此大小的数据流将被忽略

动态参数:

名字描述
Relationship NameA Regular Expression与用户自定义正则表达式的属性值相匹配的内容路由到数据流输出,该输出数据流的名字由用户自定义属性的键所决定。 支持表达式语言 (支持流属性和变量)

连线:

名字描述
unmatched与任何用户自定义表达式不匹配的内容将路由到此连线

动态连线:

根据用户设置可创建动态连线。

名字描述
Name from Dynamic Property与用户自定义表达式匹配的内容将路由到此动态连线

读取属性:

未提供。

写入属性:

未提供。

状态管理:

该组件不保存状态。

限制:

该组件没有限制

输入流要求:

组件必须提供输入流。

系统资源考量:

未提供。

* 遇到的问题:

1. 非空判断

body的内容值非空判断

Match Requirement

content must match exactly

Character Set

UTF-8

Content Buffer Size

1 MB

1.body为空

(.{0}|\d+)

img

2. 怎么判断一个JSON是否包含某个数据?

比如进行一次Http请求,请求返回的数据中有字符串 “success”:true 表名此次请求成功

.“success”:true.

img

img

img

这个正则表达式的意思是匹配包含 "success":true 这个字符串的文本。让我解释一下它是如何工作的:

  1. .*:这部分表示匹配任意数量(包括零个)的任意字符。.* 是一个常见的正则表达式模式,用于匹配任何文本中的任何内容。
  2. "success":true:这部分是具体的文本,它会精确匹配 "success":true 这个字符串。

综合起来,整个正则表达式 .*"success":true.* 表示匹配任何文本中包含 "success":true 这个字符串的部分,而且这个字符串前后可以有任意数量的其他字符。这个正则表达式通常用于从文本中提取包含成功信息的数据或信息。注意,正则表达式中的.表示除换行符以外的任何字符,* 表示匹配前面的模式零次或多次。

3. 怎么判断内容是否包含某个数据?

img

上面的图中例子表示Processor根据输入FlowFile的内容进行路由,如果输入的FlowFile的内容为hello,那么它将会被路由到hello relationship的relationship中。

RouteOnContent处理器单元的功能近似于RouteOnAttribute:

RouteOnContent处理器单元进行路由判定的内容(FlowFile的内容)

RouteOnAttribute处理器单元进行路由判定的属性(FlowFile的属性)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值