通过node-red嵌套elasticsearch GET请求

Nested elasticsearch GET requests through node-red

我在 CentOs 7 机器上有 elasticsearch 6.7 运行,我有 node-red 运行 从那里我尝试查询弹性搜索。

当我需要 POST 数据到服务器时,或者当我需要执行简单的 GET _search 查询时,使用 httprequest 节点(在节点红色中)效果很好,我可以简单地在 url,如:

http://xxx.xxx.xxx.xxx:9200/data/default/_search?size={{{size}}}&from={{{from}}}&q=sensor:temp

简单流程:

所述。

但是如果我需要具有嵌套参数的更复杂的查询,我无法通过 url 使用参数执行它。 例如,我将如何使用 node-red:

中的 httprequest 节点制作此 cURL GET
 curl -XGET "http://xxx.xxx.xxx.xxx:9200/data/default/_search" -H 'Content-Type: application/json' -d'
 {
   "size": 0,
   "query": {
     "range":{
       "created":{
         "gte":"2019-03-11",
         "lte":"2019-03-12"
       }
     }
   }, 
   "aggs": {
     "status_terms": {
       "terms": {
         "field": "device.keyword"
       },
       "aggs": {
         "status_stats": {
           "stats": {
             "field": "value"
           }
         }
       }
     }
   }
 }'

请注意,您可以在 query string as a parameters.

中发送整个正文

看起来像这样:

curl -XGET 'http://xxx.xxx.xxx.xxx:9200/data/default/_search?source_content_type=application/json&source={"size":0,"query":{"range":{"created":{"gte":"2019-03-11","lte":"2019-03-12"}}},"aggs":{"status_terms":{"terms":{"field":"device.keyword"},"aggs":{"status_stats":{"stats":{"field":"value"}}}}}}'