python elasticsearch date_histogram聚合查询
Posted zd1009
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python elasticsearch date_histogram聚合查询相关的知识,希望对你有一定的参考价值。
es版本7.6。
在使用python操作es执行date_histogram后台报错“elasticsearch.exceptions.TransportError:TransportError(503...”,kibana里执行同样的条件,报“Trying to create too many buckets. Must be less than or equal to: [10000]”。
后来发现是"time_zone"和"extended_bounds"出的问题,time_zone我设置的是东8区,而extended_bounds中的starttime和endtime还是UTC,因此endtime要在8小时之后,时间跨度很大,导致buckets数量超出限制。需要对extended_bounds日期也增加8小时。
es = Elasticsearch([‘127.0.0.1:9200‘], http_auth=(‘elastic‘, ‘elastic‘), timeout=50000) data = { "size": 0, "query": { "bool": { "must": [ { "range": { "@timestamp": { "gte": starttime, # UTC "lte": endtime, # UTC "format": "yyyy-MM-dd HH:mm:ss" } } } ] } }, "aggs": { "group_by_timestamp": { "date_histogram": { "field": "@timestamp", "fixed_interval": ‘1s‘, "format": "yyyy-MM-dd HH:mm:ss", "time_zone": "Asia/Shanghai", # 设置时区为东8区 "min_doc_count": 0, "extended_bounds": { "min": starttime, # 需要增加8小时 + datetime.timedelta(hours=8) "max": endtime # 需要增加8小时 + datetime.timedelta(hours=8) } } } } } es.search(index=[index_name], ignore_unavailable=True, body=data)
以上是关于python elasticsearch date_histogram聚合查询的主要内容,如果未能解决你的问题,请参考以下文章