如何使用NiFi处理器/语言表达式提取QueryString值?

时间:2019-05-07 08:08:17

标签: apache-nifi

我想知道如何使用NiFi从传入的URL中提取查询字符串值。 最初,我从实现UpdateAttribute开始:

enter image description here

例如,我想从传入的URL http://smth.net/hello?val=23 提取值为23。

此外,我希望可以通过以下方式引用提取的值来使用它: (InvokeHttp处理器)http://some.net/getValues?id= $ {q}

任何提示表示赞赏!

编辑后的问题:

提取查询字符串后,流文件检查如下:

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:2)

您可以将UpdateAttribute与replaceAll(正则表达式)一起使用:

${url:replaceAll('.*[\\?\\&]val=([^&]*).*','$1')}

也许正则表达式可以优化...

答案 1 :(得分:0)

实际上,检索查询字符串值的最简单方法是使用NiFi的表达式,例如:$ {http.query.param。[keyNameOfQueryString]} ..因此,如果请求URL是127.0.0.1/hello?val = 23,则NiFi表达式将为$ {http.query.param.val} UpdateAttribute processor's Configuration

其他方法是使用正则表达式,如daggett所建议的那样,但就我而言,我必须执行以下操作:

${http.query.string:replaceAll('val=(\d+).*', '$1')}

请注意使用http.query.string代替url。