博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Elasticsearch聚合 之 Date Histogram聚合
阅读量:5807 次
发布时间:2019-06-18

本文共 2395 字,大约阅读时间需要 7 分钟。

Elasticsearch的聚合主要分成两大类:metric和bucket,2.0中新增了pipeline还没有研究。本篇还是来介绍Bucket聚合中的常用聚合——date histogram.

用法

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等都是支持的。

本文转自博客园xingoo的博客,原文链接: ,如需转载请自行联系原博主。
你可能感兴趣的文章
JSON前后台简单操作
查看>>
shell中一些常见的文件操作符
查看>>
CentOS 7 装vim遇到的问题和解决方法
查看>>
JavaScript基础教程1-20160612
查看>>
使用第三方类、库需要注意的正则类RegexKitLite的使用
查看>>
iOS \U7ea2 乱码 转换
查看>>
FCN图像分割
查看>>
ios xmpp demo
查看>>
设计模式之-工厂模式、构造函数模式
查看>>
python matplotlib 中文显示参数设置
查看>>
数据库事务隔离级别
查看>>
os模块大全详情
查看>>
【ros】Create a ROS package:package dependencies报错
查看>>
从内积的观点来看线性方程组
查看>>
kali linux 更新问题
查看>>
HDU1576 A/B【扩展欧几里得算法】
查看>>
廖雪峰javascript教程学习记录
查看>>
WebApi系列~目录
查看>>
限制CheckBoxList控件只能单选
查看>>
Java访问文件夹中文件的递归遍历代码Demo
查看>>