需求背景
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 1
@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 |