根据自定义(存储桶)间隔汇总指标

时间:2018-09-10 16:36:28

标签: elasticsearch elasticsearch-java-api

我正在尝试从当前时间开始,每5分钟对一个小时内的某个指标进行平均。因此,一个小时内将有12个数据点,其中每个数据点将是5分钟内该指标的平均值。当前,该指标每10秒就会转储到Elastic中。我能够编写以下查询:

GET /%3Cindexname-%7Bnow%2Fd%7D%3E/_search
    {"size": 0, 
       "query":{
          "range":{
             "collectionTime":{
                "gte":"now-1h/h",
                "lt":"now/h",
                "boost": 2.0
             }
          }
       },
    "aggs": {
      "time_buckets": {
    "date_histogram": {
      "field": "collectionTime",
      "interval": "300s"
    }, 
        "aggs": {
          "some_avg": {
            "avg": {
              "field": "field_to_be_averaged"
            }
          }
        }
      }
    }     
    } 

此查询的问题是:

1)它生成13个存储桶,而不是12个。 2)不会从“ now”-“ now-5m”创建存储桶,依此类推。例如,如果此查询将在上午11:27运行,则期望的输出将是上午11:27-上午10:27的12个平均值。但是获得的输出是从9:30 am-10:30 am。猜猜日期直方图舍入为1,4或5的最接近倍数。

我计划在Java服务中实现此查询,该服务将使用其High Level Rest Client与Elastic对话。关于此的任何见解/指标都将非常有帮助!

0 个答案:

没有答案