apache-nifi - 如何使用 NiFi 处理器 RouteOnContent

标签 apache-nifi

我正在尝试读取这样的日志文件:

199.72.81.55 - - [01/Jul/1995:00:00:01 -0400] "GET /history/apollo/ HTTP/1.0" 200 6245
unicomp6.unicomp.net - - [01/Jul/1995:00:00:06 -0400] "GET /shuttle/countdown/ HTTP/1.0" 200 3985
199.120.110.21 - - [01/Jul/1995:00:00:09 -0400] "GET /shuttle/missions/sts-73/mission-sts-73.html HTTP/1.0" 200 4085
burger.letters.com - - [01/Jul/1995:00:00:11 -0400] "GET /shuttle/countdown/liftoff.html HTTP/1.0" 304 0
199.120.110.21 - - [01/Jul/1995:00:00:11 -0400] "GET /shuttle/missions/sts-73/sts-73-patch-small.gif HTTP/1.0" 200 4179

每次运行此练习时,我都会发送 1000 行,并且我使用的是 splitText 处理器,并且在 extractText 处理器中我使用此正则表达式:

successCode -> ^[0-9A-Z\-a-z\.]* - - \[[0-9A-Za-z\/\:]* -[0-9]*\] \"[A-Z]* [0-9A-Za-z\/\.\- ]*\" ([0-9]*) [0-9]*
tiemStamp -> ^[0-9A-Z\-a-z\.]* - - \[([0-9A-Za-z\/\:]*) -[0-9]*\] \"[A-Z]* [0-9A-Za-z\/\.\- ]*\" [0-9]* [0-9]*
important -> ^([0-9A-Z\-a-z\.]*) - - \[[0-9A-Za-z\/\:]* -[0-9]*\] \"[A-Z]* [0-9A-Za-z\/\.\- ]*\" [0-9]* [0-9]*

这可能是一个错误。这肯定是我的问题。

然后,我尝试将不同的日志发送到不同的路由。如果 successCode == 200 然后我尝试将其放在路线/user//success/%{tiemStamp}/上,但我所有的行都转到第三种方式:“不匹配”

在我尝试过的 RouteOnContent 处理器上:

successCode -> ${successCode:equals("200")}
successCode -> ${successCode:contains(2)}
successCode -> ${successCode:contains("2")}

有人使用过“RouteOnContent”处理器吗?

最佳答案

根据文档,ExtractText 处理器“根据 FlowFile 的内容评估一个或多个正则表达式。这些正则表达式的结果将分配给 FlowFile 属性 [...]”

因此,您不应在下一步中使用 RouteOnContent 而应使用 RouteOnAttribute 处理器。

(如果您停止 RouteOnXXX 处理器以便将消息保留在队列中,您可以看到流文件的内容。在流文件的“属性”选项卡上,您可以看到不同属性的值。我确认使用您的正则表达式,我的 successCode=200。)

关于apache-nifi - 如何使用 NiFi 处理器 RouteOnContent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49797202/

相关文章:

mysql - 从 NiFi 中的 QueryDatabaseTable 中获取数据

java - NiFi - 如何根据子元素的值获取特定的 DOM 元素

apache-nifi - 在 kylo 中自定义数据摄取模板

java - NiFi Confluence Schema 注册表异常

java - 在运行时重新加载authorizers.xml文件

java - 具有解码器问题的 Kafka Avro 消费者

apache-nifi - NiFi ListenHTTP 处理器 : how to specify "allow post"?

apache-nifi - 什么是删除 nifi 流文件内容的最快方法?

hadoop - putHDFS处理器中的Nifi错误:无法确定当前用户

Apache-Nifi 无法创建 'com.mysql.jdbc.Driver' 类的 JDBC 驱动程序