2

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

我的完整查询:

{
  "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"
                      }
                    }
                  }
                ]
              }
            }
          ]
        }
      }
    }
  }
}
4

3 回答 3

2

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

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

更新

给定您的时间间隔1800m,您还需要指定此偏移量

   "offset": "1d"
于 2015-10-27T09:31:31.343 回答
0

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

您的第一个存储桶从 31/12/2014 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 开始,那么您需要将其指定为extended_bounds.min直方图聚合中的 。

于 2015-10-27T12:49:40.707 回答
0

谢谢你的问题代码。我解决了。我从你的模板代码中删除了一些代码。所以我做了这个代码来工作。这是“date_histogram => date range”的非常简单的模板是好的

       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"
                         }
                       }
                     }
                   ]
                 }
               }
             ]
           }
         }
      }
   }
  }
`
于 2016-12-14T08:23:33.573 回答