我想从Apache Nifi执行以下查询:
GET /myindex/_search
{
"size": 0,
"aggs": {
"range": {
"date_range": {
"field": "Datetime",
"ranges": [
{
"from": "2017-02-17T16:00:00Z||-1H/H",
"to": "2017-02-17T16:00:00Z||/H"
}
]
}
}
}
}
我想获取
doc_count
的值。我尝试使用
InvokeHTTP
,并将上面定义的查询直接粘贴到HTTP Method
字段中。我还将Remote URL
设置为http://localhost:9200
。我将InvokeHTTP
与PutFile
连接起来,以便将响应保存在磁盘上。关系是Response
。当我运行
InvokeHTTP
时,它没有给我任何错误。但是,它都不输出任何结果(用于响应的FlowFile)。我确定结果不是空集,因为我使用curl
测试了此查询。我的方法有什么问题?我应该以其他方式定义
HTTP Method
吗? 最佳答案
对于POST,PUT和PATCH之类的动词,通常会将上述JSON正文作为流文件的内容,然后将其传递给InvokeHttp,并在其中设置正确的动词和URL。但是,InvokeHttp文档指出,将不会为GET动词发送消息正文。
好消息是,用于搜索端点的Elasticsearch REST API支持GET和POST。从他们最新的文档中可以得出:“HTTP GET和HTTP POST都可以用来执行带主体的搜索。由于并非所有客户端都支持带主体的GET,所以也允许POST。”
我将流文件的内容设置为上述JSON主体(也许使用GenerateFlowFile或ReplaceText),然后将POST用作动词。
关于http - 如何使用InvokeHTTP从Apache Nifi执行ElasticSearch agg查询?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46078792/