ElasticSearch日期直方图间隔

时间:2015-10-27 09:14:25

标签: elasticsearch sense

为什么我的查询包含从日期到日期的过滤器,但是当使用日期直方图聚合时,开始时间间隔从日期到日期范围(有时)。 我的查询从2015-01-01过滤到2015-01-31,间隔开始日期必须在2015-01-012015-01-31的范围内,但是开始日期我的结果是2014-12-31。如何在2015-01-012015-01-31范围内定义开始日期。 date histogram

我的完整查询:

{
  "size": 0,
  "aggs": {
    "cluster": {
      "terms": {
        "field": "cluster"
      },
      "aggs": {
        "histogram_Log": {
          "date_histogram": {
            "field": "actionTime",
            "interval": "1800m",
            "format": "dd/MM/YYYY hh:mm:ss"
          },
          "aggs": {
            "typelog": {
              "terms": {
                "field": "typeLog"
              }
            }
          }
        }
      }
    }
  },
  "query": {
    "filtered": {
      "filter": {
        "bool": {
          "must": [
            {
              "bool": {
                "must": [
                  {
                    "match_all": {}
                  },
                  {
                    "range": {
                      "actionTime": {
                        "lte": "2015-01-31T00:00:00.000",
                        "gte": "2015-01-01T00:00:00.000"
                      }
                    }
                  }
                ]
              }
            }
          ]
        }
      }
    }
  }
}

3 个答案:

答案 0 :(得分:1)

请使用以下格式代替HH。您使用的是hh 12小时而不是24小时制。

   "format": "dd/MM/YYYY HH:mm:ss"

<强>更新

考虑到1800m的间隔,您还需要指定此偏移量

   "offset": "1d"

答案 1 :(得分:0)

您在结果中突出显示的时间戳不是文档的时间戳,而是第一个存储桶的开头。

您的第一个桶从2014年12月31日00:00:00到01/01/2015 06:00:00。

您已将查询过滤为仅返回时间戳晚于01/01/2015 00:00:00的文档,但由于那是在01/01/2015 06:00:00之前,您的文档属于您的第一桶。

如果您还要强制您的存储桶在01/01/2015 00:00:00开始,那么您需要在直方图聚合中将其指定为 Highcharts.setOptions({ global: { useUTC: false } });

答案 2 :(得分:0)

谢谢你的问题Code.I解决它。我从你的模板代码中删除一些代码。所以我做了这个代码的工作。这是非常简单的模板&#34; date_histogram =&gt;日期范围&#34;没关系

       var queryOptions = 
            {
       "aggs": {
         "all_hours": {
             "date_histogram": {
               "field": "stamp",
               "interval": "1d",
               "format": "dd/MM/YYYY"
                         }
                     }
             },
            "query": {
       "filtered": {
       "filter": {
           "bool": {
             "must": [
               {
                 "bool": {
                   "must": [
                     {
                       "match_all": {}
                     },
                     {
                       "range": {
                         "stamp": {
                           "lte": "2016-10-20",
                           "gte": "2016-05-01"
                         }
                       }
                     }
                   ]
                 }
               }
             ]
           }
         }
      }
   }
  }
`