我有一个NiFi流,其中通过API引入了一些数据,这些数据可以轻松地路由到ElasticSearch中。
我有第二个流程,需要使用处理器QueryElasticSearchHttp
。在该处理器中,我有一个JSON查询:
{
"query" : {
"bool" : {
"must" : [
{ "match" : { "Example1" : ${Example1} } },
{ "match" : { "ExampleCode" : ${ExampleCode} } }
]
}
}
}
我试图匹配对象Example1
和ExampleCode
并返回整列。我试图将表达式语言注入查询中。不起作用,并且我找不到如何在整个对象上进行匹配的示例。
我试图像这样用引号引起来:"${}"
。
我得到了错误:
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
属性也已正确路由,并在需要显示的位置出现。
格式化它的正确方法是什么?谢谢
答案 0 :(得分:1)
您可以尝试使用JsonQueryElasticsearch
处理器。演示流程如下所示:
运行输出:
$ 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"
}
]