NiFi:QueryElasticSearchHttp:将对象与表达语言匹配吗?

时间:2018-11-06 21:01:28

标签: elasticsearch apache-nifi

我有一个NiFi流,其中通过API引入了一些数据,这些数据可以轻松地路由到ElasticSearch中。

我有第二个流程,需要使用处理器QueryElasticSearchHttp。在该处理器中,我有一个JSON查询:

{
    "query" : { 
        "bool" : {
            "must" : [
                { "match" : { "Example1" : ${Example1} } },
                { "match" : { "ExampleCode" : ${ExampleCode} } }
            ]
        }
    }       
}

我试图匹配对象Example1ExampleCode并返回整列。我试图将表达式语言注入查询中。不起作用,并且我找不到如何在整个对象上进行匹配的示例。

我试图像这样用引号引起来:"${}"

我得到了错误:

ERROR [Timer-Driven Process Thread-7] ...from Elasticsearch due to 
Elasticsearch returned code 400 with message Bad Request, transferring 
flow file to failure: 
org.apache.nifi.processors.elasticsearch.UnretryableException: 
Elasticsearch returned code 400 with message Bad Request

属性也已正确路由,并在需要显示的位置出现。

格式化它的正确方法是什么?谢谢

1 个答案:

答案 0 :(得分:1)

您可以尝试使用JsonQueryElasticsearch处理器。演示流程如下所示:

总体流量 Overall flow

开始步骤 Start Step

查询ES步骤 Query ES Step

JSON查询 The JSON query

存储结果步骤 enter image description here

控制器服务 The Controller Service

运行输出:

$ cd /var/so_out
$ cat 17973351988502 | python -m json.tool
[
    {
        "_id": "o002",
        "_index": "office",
        "_score": 0.26742277,
        "_source": {
            "description": "Shows and events",
            "name": "Tom",
            "title": "Marketing Manager"
        },
        "_type": "doc"
    }
]