elasticsearch 为什么ElasticSearch只为dat_直方图聚合返回5个存储桶?
我有一个ElasticSearch索引,里面满是遗留的日志数据,我想按小时存储这些数据,以了解数据最活跃的时间。date_直方图聚合似乎非常适合这样做,但我在计算如何使聚合生成5个以上的桶时遇到了一个问题 索引中有大约7.25亿个文档,跨度约为7或8个月,因此每小时应该有数千个存储桶,但当我使用下面的查询体时,我只返回5个存储桶
elasticsearch 为什么ElasticSearch只为dat_直方图聚合返回5个存储桶?,
elasticsearch,
elasticsearch,我有一个ElasticSearch索引,里面满是遗留的日志数据,我想按小时存储这些数据,以了解数据最活跃的时间。date_直方图聚合似乎非常适合这样做,但我在计算如何使聚合生成5个以上的桶时遇到了一个问题 索引中有大约7.25亿个文档,跨度约为7或8个月,因此每小时应该有数千个存储桶,但当我使用下面的查询体时,我只返回5个存储桶 { "query":{ "match_all":{} }, "aggs":{ "events_per_hour"
{
"query":{
"match_all":{}
},
"aggs":{
"events_per_hour":{
"date_histogram":{
"field":"timestamp",
"interval":"hour"
}
}
}
}
结果似乎跨越了正确的时间段,但它迫使它分成5个桶,而不是我预期的几千个桶
{
"took": 276509,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 726450222,
"max_score": 0,
"hits": []
},
"aggregations": {
"events_per_hour": {
"buckets": [
{
"key_as_string": "1970-01-18T13:00:00.000Z",
"key": 1515600000,
"doc_count": 51812791
},
{
"key_as_string": "1970-01-18T14:00:00.000Z",
"key": 1519200000,
"doc_count": 130819007
},
{
"key_as_string": "1970-01-18T15:00:00.000Z",
"key": 1522800000,
"doc_count": 188046057
},
{
"key_as_string": "1970-01-18T16:00:00.000Z",
"key": 1526400000,
"doc_count": 296038311
},
{
"key_as_string": "1970-01-18T17:00:00.000Z",
"key": 1530000000,
"doc_count": 59734056
}
]
}
}
}
我试图用谷歌搜索这个问题,但它看起来像是可以添加到术语聚合中的大小参数,但直方图显然不可用,我试图更改search.max_bucket
设置,但也不起作用
有没有办法让ES将这些数据拆分成我需要的数千个存储桶?或者我必须写一些东西,只下载所有数据并在内存中手动拆分它吗?如果你将“键作为字符串”(1970-01-18T13:00:00.000)从日期转换为历元,你会看到:
纪元时间戳:1515600
时间戳(毫秒):1515600000
如果您将纪元中的1515600000翻译为日期,您将收到正确的日期(2018年1月10日星期三下午4:00:00)
所以,看起来您发送的是纪元,但是是字段定义的毫秒的日期格式。看到1970年的日期,我有点惊讶。可能是因为时间戳的单位是秒而不是毫秒。如果添加以下聚合,您可以共享您得到的结果吗<代码>“minmaxdate”:{“stats”:{“field”:“timestamp”}?是的,这肯定是个问题,我们以前在尝试使用Kibana
“min_as_string”中的数据时遇到过问题:“1970-01-18T13:40:22.510Z”,“max_as_string”:“1970-01-18T17:13:04.798Z”
好了,很高兴它有帮助!