不同时区ElasticSearch聚合

ymzxtsji  于 2022-11-02  发布在  ElasticSearch
关注(0)|答案(1)|浏览(129)

我想看看一天中按小时划分的直方图。
问题出在 * 时区 *:如果我把一个文档放在美国的上午8点和欧洲的上午8点,我有不同的时区,但在图表中,我想把它们聚集在同一个小时。
因此,我的结果应该是上午8点2个文档计数
我的实际数据:

[
  {
    "_index" : "test_index",
    "_type" : "_doc",
    "_id" : "1",
    "_score" : 1.0,
    "_source" : {
      "my_time" : "2021-09-17T08:00:00.000-04:00",
      "value" : 1
    }
  },
  {
    "_index" : "test_index",
    "_type" : "_doc",
    "_id" : "2",
    "_score" : 1.0,
    "_source" : {
      "my_time" : "2021-09-17T08:00:00.000+02:00",
      "value" : 2
    }
  },
  {
    "_index" : "test_index",
    "_type" : "_doc",
    "_id" : "3",
    "_score" : 1.0,
    "_source" : {
      "my_time" : "2021-09-17T03:00:00.000-04:00",
      "value" : 3
    }
  },
  {
    "_index" : "test_index",
    "_type" : "_doc",
    "_id" : "4",
    "_score" : 1.0,
    "_source" : {
      "my_time" : "2021-09-17T04:00:00.000-08:00",
      "value" : 4
    }
  },
  {
    "_index" : "test_index",
    "_type" : "_doc",
    "_id" : "5",
    "_score" : 1.0,
    "_source" : {
      "my_time" : "2021-09-17T23:00:00.000+04:00",
      "value" : 5
    }
  }
]

在Map中

"my_time": {
    "type": "date"
 }

我的疑问:

POST /test_index/_search?size=0
{
  "aggs": {
    "my_results": {
      "date_histogram": {
        "field": "my_time",
        "calendar_interval": "1h"
      }
    }
  }
}

但是结果是令人担忧的!2!3例如:

"buckets" : [
    {
      "key_as_string" : "2021-09-17T06:00:00.000Z",
      "key" : 1631858400000,
      "doc_count" : 1
    },
    {
      "key_as_string" : "2021-09-17T07:00:00.000Z",
      "key" : 1631862000000,
      "doc_count" : 1
    },
    ......
]

我该如何修复它?

cwdobuhd

cwdobuhd1#

我也在纠结这个问题。
就我所见,最简单的解决方案似乎是创建两个不同的日期时间字段,一个存储UTC日期时间,另一个存储本地时间(作为“假”UTC日期时间)。然后,您可以使用本地时间字段按小时进行聚合,使用UTC字段进行标准搜索查询。
但是,老实说,在我看来更像是一个变通办法,而不是一个适当的解决方案...

相关问题