Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
<img src="//i.stack.imgur.com/RUiNP.png" height="16" width="18" alt="" class="sponsor tag img">elasticsearch 为什么ElasticSearch只为dat_直方图聚合返回5个存储桶?_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch 为什么ElasticSearch只为dat_直方图聚合返回5个存储桶?,elasticsearch,elasticsearch" /> elasticsearch 为什么ElasticSearch只为dat_直方图聚合返回5个存储桶?,elasticsearch,elasticsearch" />

elasticsearch 为什么ElasticSearch只为dat_直方图聚合返回5个存储桶?

elasticsearch 为什么ElasticSearch只为dat_直方图聚合返回5个存储桶?,elasticsearch,elasticsearch,我有一个ElasticSearch索引,里面满是遗留的日志数据,我想按小时存储这些数据,以了解数据最活跃的时间。date_直方图聚合似乎非常适合这样做,但我在计算如何使聚合生成5个以上的桶时遇到了一个问题 索引中有大约7.25亿个文档,跨度约为7或8个月,因此每小时应该有数千个存储桶,但当我使用下面的查询体时,我只返回5个存储桶 { "query":{ "match_all":{} }, "aggs":{ "events_per_hour"

我有一个ElasticSearch索引,里面满是遗留的日志数据,我想按小时存储这些数据,以了解数据最活跃的时间。date_直方图聚合似乎非常适合这样做,但我在计算如何使聚合生成5个以上的桶时遇到了一个问题

索引中有大约7.25亿个文档,跨度约为7或8个月,因此每小时应该有数千个存储桶,但当我使用下面的查询体时,我只返回5个存储桶

{
    "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”
好了,很高兴它有帮助!