• 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
    
    • 1

    Character Set

    UTF-8
    
    • 1

    Content Buffer Size

    1 MB
    
    • 1

    1.body为空

    (.{0}|\d+)
    
    • 1

    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的属性)

  • 相关阅读:
    一周总结(回溯:组合问题&切割问题)
    对MD数据的分析(FEL和DSSP)
    集成学习方法之随机森林-入门
    卡尔曼滤波之二:Python实现
    最佳 DeFi 代币模型:治理代币 or 生产性代币 or veToken?
    对DataFrame的每行进行重塑每行的所有列和值都用单独一行显示stack()方法
    强烈推荐 20.7k Star!企业级商城开源项目强烈推荐!基于DDD领域驱动设计模型,助您快速掌握技术奥秘,实现业务快速增长
    【JavaWeb】手把手教你Eclipse、IDEA集成Tomcat构建Web应用
    【MySQL系列】- MYSQL锁机制
    记录-gitlab-安装在k8s中的一些注意点
  • 原文地址:https://blog.csdn.net/qq_16313575/article/details/133315156