Elasticsearch Date_Histogram不包含整个过滤器

时间:2015-10-01 11:35:35

标签: elasticsearch date-histogram

我正在使用ES Date Histogram并且一种奇怪的行为开始发生,我想知道原因。

这是我发送给elasticsearch的请求:

{
   "from": 0,
   "size": 0,
   "query": {
      "filtered": {
         "filter": {
            "and": [
               {
                  "bool": {
                     "must": [
                        {
                           "range": {
                              "publishTime": {
                                 "from": "2010-07-02T12:15:20.000Z",
                                 "to": "2015-07-08T12:43:59.000Z"
                              }
                           }
                        }
                     ]
                  }
               }
            ]
         }
      }
   },
   "aggs": {
      "agg|date_histogram|publishTime": {
         "date_histogram": {
            "field": "publishTime",
            "interval": "1d",
            "min_doc_count": 0
         }
      }
   }
}

我得到的结果是桶,第一个桶是:

{
   "key_as_string": "2010-08-24T00:00:00.000Z",
   "key": 1282608000000,
   "doc_count": 1
}

所以我从2010-07-02过滤并仅从2010-08-24获得结果

这只是一个例子,我也看到了这种行为,还有更多丢失的桶(几个月)。

[编辑] 这似乎与第一个结果的日期相关,这意味着该时间范围内的第一个结果是2010-08-24,但是当我包括"min_doc_count": 0时,我希望从整个范围得到结果

1 个答案:

答案 0 :(得分:2)

min_doc_count仅足以在您的过滤器匹配的第一个和最后一个文档之间返回空桶。如果您想获得整个范围的结果,您还需要使用extended_bounds

  "aggs": {
      "agg|date_histogram|publishTime": {
         "date_histogram": {
            "field": "publishTime",
            "interval": "1d",
            "min_doc_count": 0
            "extended_bounds": {
                "min": 1278072920000, 
                "max": 1436359439000
            }
         }
      }
   }