
需求背景
ES 版本为 1.5.2
使用 olivere/elastic 对 ES 进行查询操作。假定数据文档结构为
{ "id": 1, "create_at": "2006-01-02T15:04:05Z07:00" } ES 中已经有一定量的数据。
需要查询:指定日期段 /全量时间段 内每天 00:00-02:00, 02:00-04:00 , 04:00-06:00 ... 22:00-24:00 的文档的平均值中的最高值。
简单的统计查询已经搞定,只有这条需求感觉无从下手。目前能检索到的类似文章:
https://elasticsearch.cn/question/893
https://blog.csdn.net/weixin_33953249/article/details/87338463
第一篇没生效,第二篇没看懂。我这里使用 Go 语言操作 ES 才两天,并且还有其他开发任务,没有做特别深入研究。
请大佬们启发和赐教。
1 ben1024 2019-06-10 13:49:20 +08:00 需要理解‘桶’,也就是做个聚合就行 |
2 996icu 2019-06-10 14:40:57 +08:00 时间分组聚合,官网有案例 |
3 Takamine 2019-06-10 16:09:10 +08:00 话说为什么要选 ES 的版本这么低。:smile: |
4 jessun1990 OP |
5 996icu 2019-06-10 16:30:47 +08:00 @jessun1990 时间区间分组聚合 dateHistogramInterval.hours(小时区间) 我只会用 JavaApi 写,DSL 不会,你可以查下 dateHistogramInterval 这个 DSL 的使用 |
6 dif 2019-06-10 16:35:01 +08:00 ```json GET indexName/indexType/_search { "from" : 0, "size" : 1, "query" : { "bool" : { "must" : [ { "term" : { "Field" : { "value" : "value", "boost" : 1.0 } } } ] } }, "aggregations" : { "histogram" : { "histogram" : { "field" : "DATE_TIME", "interval" : 120.0, "offset" : 0.0 }, "aggregations" : { "index_value" : { "avg" : { "field" : "AVG_FIELD_NAME" } } } } } } ``` |
7 jessun1990 OP |