Elasticsearch聚合 之 Date Histogram聚合
elasticsearch Date 聚合 Histogram
2023-09-14 09:12:26 时间
用法
Date histogram的用法与histogram差不多,只不过区间上支持了日期的表达式。
{
"aggs":{
"articles_over_time":{
"date_histogram":{
"field":"date",
"interval":"month"
}
}
}
}
interval字段支持多种关键字:`year`, `quarter`, `month`, `week`, `day`, `hour`, `minute`, `second`
当然也支持对这些关键字进行扩展使用,比如一个半小时可以定义成如下:
{
"aggs":{
"articles_over_time":{
"date_histogram":{
"field":"date",
"interval":"1.5h"
}
}
}
}
返回的结果可以通过设置format进行格式化:
{
"aggs":{
"articles_over_time":{
"date_histogram":{
"field":"date",
"interval":"1M",
"format":"yyyy-MM-dd"
}
}
}
}
得到的结果如下:
{
"aggregations":{
"articles_over_time":{
"buckets":[{
"key_as_string":"2013-02-02",
"key":1328140800000,
"doc_count":1
},{
"key_as_string":"2013-03-02",
"key":1330646400000,
"doc_count":2
},
...
]}
}
}
其中key_as_string是格式化后的日期,key显示了是日期时间戳,
time_zone时区的用法
在es中日期支持时区的表示方法,这样就相当于东八区的时间。
{
"aggs":{
"by_day":{
"date_histogram":{
"field":"date",
"interval":"day",
"time_zone":"+08:00"
}
}
}
}
offset 使用偏移值,改变时间区间
默认情况是从凌晨0点到午夜24:00,如果想改变时间区间,可以通过下面的方式,设置偏移值:
{"aggs":{
"by_day":{
"date_histogram":{
"field":"date",
"interval":"day",
"offset":"+6h"
}
}
}
}
那么桶的区间就改变为:
"aggregations":{
"by_day":{
"buckets":[{
"key_as_string":"2015-09-30T06:00:00.000Z",
"key":1443592800000,
"doc_count":1
},{
"key_as_string":"2015-10-01T06:00:00.000Z",
"key":1443679200000,
"doc_count":1
}]
}
}
Missing Value缺省字段
当遇到没有值的字段,就会按照缺省字段missing value来计算:
{
"aggs":{
"publish_date":{
"date_histogram":{
"field":"publish_date",
"interval":"year",
"missing":"2000-01-01"
}
}
}
}
其他
对于其他的一些用法,这里就不过多赘述了,比如脚本、Order、min_doc_count过滤,extended_bounds等都是支持的。
相关文章
- Elastic Stack——Elastic Stack简介和Elasticsearch核心详解
- 干货 | Elasticsearch Java 客户端演进历史和选型指南
- Elasticsearch 8.X 检索实战调优锦囊 001
- python3获取Elasticsearch数据库数据
- 大数据ELK Stack(一):Elasticsearch 简介
- 全文检索工具elasticsearch:第二章:安装配置
- 03-Elasticsearch-基本语法
- 无状态(stateless)—— 解锁使用Elasticsearch的新方式
- Elasticsearch详解
- localdate转date时区问题_时间戳和LocalDateTime和Date互转和格式化[通俗易懂]
- ElasticSearch快速入门
- SpringData集成Elasticsearch
- 技术分析 | 浅析MySQL与ElasticSearch的组合使用
- AWS回应Elastic修改开源协议:创建“真正”开源的Elasticsearch分支
- 【ES三周年】03-ElasticSearch环境
- 让Linux时间更加准确:配置正确的Date时区(linux date时区)
- MySQL中Date实例操作日期数据变得更简单(mysql中date实例)
- MySQL与Date数据类型的应用及注意事项(mysql。date)
- Oracle数据库中修改Date类型的操作方法(oracle修改date)
- Oracle数据库中如何传入Date类型(oracle传入date)
- Mysql日期时间DATE_FORMAT(date,format)