elasticsearch ElasticSearch中的闰年和每周聚合,elasticsearch,elasticsearch" /> elasticsearch ElasticSearch中的闰年和每周聚合,elasticsearch,elasticsearch" />

elasticsearch ElasticSearch中的闰年和每周聚合

elasticsearch ElasticSearch中的闰年和每周聚合,elasticsearch,elasticsearch,我每年在elasticsearch中进行嵌套聚合,然后每年每周进行一次。闰年有53周,但ElasticSearch的结果给出的是闰年的最后一周key=“1”,而不是“53”。如何使ElasticSearch返回53而不是上周的1 我的问题是: GET _search { "size": 0, "aggs": { "activities_per_year": { "date_histogram": { "field": "start",

我每年在elasticsearch中进行嵌套聚合,然后每年每周进行一次。闰年有53周,但ElasticSearch的结果给出的是闰年的最后一周key=“1”,而不是“53”。如何使ElasticSearch返回53而不是上周的1

我的问题是:

GET _search
    {
  "size": 0,
  "aggs": {
    "activities_per_year": {
      "date_histogram": {
        "field": "start",
        "interval": "1y",
        "format": "yyyy"
      },
      "aggs": {
        "activities_per_week": {
          "date_histogram": {
            "field": "start",
            "interval": "week",
            "format": "w"
          }
        }
      }
    }
  }
}
以及结果(删除中间的数据):

2008年是闰年,最后一周有“key_as_string”:“1”。我希望这是53,所以我可以把它添加到我的字典:)我怎么能做到这一点


另外,elasticsearch返回两周的“key_as_string”:“1”表示2013年,我不认为2013年是闰年?

这有一些微妙的问题需要注意。首先,Elasticsearch使用日期时间相关的东西

第二,看一看关于什么是“一周”的解释:

以周为基础的年份是以周中的一天表示日期的年份, 周数和年(基于周)。以下描述是对 本文件中此方法的实现所使用的ISO8601标准 图书馆

在以周为基础的一年中,周从1到52-53。开学第一天 星期定义为星期一,并给定值1

一年中的第一周定义为在 一年中至少四天。根据此定义,第1周 可能延续到上一年,第52/53周可能延续到下一年 次年。因此,我们需要一个为期一周的领域

例如,2003-01-01是一个星期三。这就是说五天,, 星期三到星期天,那一周的时间是在2003年。因此,整个星期都很紧张 被认为是2003年的第一周。因为所有的星期都是从 2003年第一周的星期一始于2002年12月30日,即2002年

基于周的年份具有特定的文本格式。2002-12-30(星期一) (2002年12月30日)的代表为2003-W01-1。2003-01-01 (2003年1月1日星期三)的代表为2003-W01-3

所以,在你的例子中,你认为2008年12月29日属于第一周,因为2008年12月29日是一周,2008年有三天,2009年有四天。根据上述规则,这是从2009年开始的第1周。这与闰年无关。举个例子,尝试索引31-12-2009和31-12-2015。两者都会给你第53周,而不是闰年

为了更好地了解这些内容,我建议使用以下格式进行聚合:
“格式”:“x-w---yyyy-MM-dd”


感谢您的精彩解释:-)但为什么Elasticsearch不“过滤”2009年的日期,因为我的第一次聚合的时间间隔为:1y?我以为我的子聚合“每周活动”是从与“每年活动”聚合匹配的文档中得到的输入?
"key_as_string": "2008",
           "key": 1199145600000,
           "doc_count": 872,
           "activities_per_week": {
              "buckets": [
                 {
                    "key_as_string": "1",
                    "key": 1199059200000,
                    "doc_count": 6
                 },
                 {
                    "key_as_string": "2",
                    "key": 1199664000000,
                    "doc_count": 5
                 },
                 {
                    "key_as_string": "3",
                    "key": 1200268800000,
                    "doc_count": 15
                 },       {
                    "key_as_string": "51",
                    "key": 1229299200000,
                    "doc_count": 18
                 },
                 {
                    "key_as_string": "52",
                    "key": 1229904000000,
                    "doc_count": 7
                 },
                 {
                    "key_as_string": "1",
                    "key": 1230508800000,
                    "doc_count": 1
                 }
              ]
{
  "size": 0,
  "aggs": {
    "activities_per_year": {
      "date_histogram": {
        "field": "start",
        "interval": "1y",
        "format": "yyyy"
      },
      "aggs": {
        "activities_per_week": {
          "date_histogram": {
            "field": "start",
            "interval": "week",
            "format": "x-w---yyyy-MM-dd"
          }
        }
      }
    }
  }
}