转 http://www.cnblogs.com/xing901022/p/4951603.html

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

用法

Date histogram的用法与histogram差不多,只不过区间上支持了日期的表达式。

  1. {
  2. "aggs":{
  3. "articles_over_time":{
  4. "date_histogram":{
  5. "field":"date",
  6. "interval":"month"
  7. }
  8. }
  9. }
  10. }

interval字段支持多种关键字:`year`, `quarter`, `month`, `week`, `day`, `hour`, `minute`, `second`

当然也支持对这些关键字进行扩展使用,比如一个半小时可以定义成如下:

  1. {
  2. "aggs":{
  3. "articles_over_time":{
  4. "date_histogram":{
  5. "field":"date",
  6. "interval":"1.5h"
  7. }
  8. }
  9. }
  10. }

返回的结果可以通过设置format进行格式化:

  1. {
  2. "aggs":{
  3. "articles_over_time":{
  4. "date_histogram":{
  5. "field":"date",
  6. "interval":"1M",
  7. "format":"yyyy-MM-dd"
  8. }
  9. }
  10. }
  11. }

得到的结果如下:

  1. {
  2. "aggregations":{
  3. "articles_over_time":{
  4. "buckets":[{
  5. "key_as_string":"2013-02-02",
  6. "key":1328140800000,
  7. "doc_count":1
  8. },{
  9. "key_as_string":"2013-03-02",
  10. "key":1330646400000,
  11. "doc_count":2
  12. },
  13. ...
  14. ]}
  15. }
  16. }

其中key_as_string是格式化后的日期,key显示了是日期时间戳,

time_zone时区的用法

在es中日期支持时区的表示方法,这样就相当于东八区的时间。

  1. {
  2. "aggs":{
  3. "by_day":{
  4. "date_histogram":{
  5. "field":"date",
  6. "interval":"day",
  7. "time_zone":"+08:00"
  8. }
  9. }
  10. }
  11. }

offset 使用偏移值,改变时间区间

默认情况是从凌晨0点到午夜24:00,如果想改变时间区间,可以通过下面的方式,设置偏移值:

  1. {"aggs":{
  2. "by_day":{
  3. "date_histogram":{
  4. "field":"date",
  5. "interval":"day",
  6. "offset":"+6h"
  7. }
  8. }
  9. }
  10. }

那么桶的区间就改变为:

  1. "aggregations":{
  2. "by_day":{
  3. "buckets":[{
  4. "key_as_string":"2015-09-30T06:00:00.000Z",
  5. "key":1443592800000,
  6. "doc_count":1
  7. },{
  8. "key_as_string":"2015-10-01T06:00:00.000Z",
  9. "key":1443679200000,
  10. "doc_count":1
  11. }]
  12. }
  13. }

Missing Value缺省字段

当遇到没有值的字段,就会按照缺省字段missing value来计算:

  1. {
  2. "aggs":{
  3. "publish_date":{
  4. "date_histogram":{
  5. "field":"publish_date",
  6. "interval":"year",
  7. "missing":"2000-01-01"
  8. }
  9. }
  10. }
  11. }

其他

对于其他的一些用法,这里就不过多赘述了,比如脚本、Order、min_doc_count过滤,extended_bounds等都是支持的。

Elasticsearch聚合 Date Histogram聚合的更多相关文章

  1. Elasticsearch聚合 之 Date Histogram聚合

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

  2. Elasticsearch聚合 之 Histogram 直方图聚合

    Elasticsearch支持最直方图聚合,它在数字字段自动创建桶,并会扫描全部文档,把文档放入相应的桶中.这个数字字段既可以是文档中的某个字段,也可以通过脚本创建得出的. 桶的筛选规则 举个例子,有 ...

  3. ElasticSearch 2 (37) - 信息聚合系列之内存与延时

    ElasticSearch 2 (37) - 信息聚合系列之内存与延时 摘要 控制内存使用与延时 版本 elasticsearch版本: elasticsearch-2.x 内容 Fielddata ...

  4. elasticsearch系列六:聚合分析(聚合分析简介、指标聚合、桶聚合)

    一.聚合分析简介 1. ES聚合分析是什么? 聚合分析是数据库中重要的功能特性,完成对一个查询的数据集中数据的聚合计算,如:找出某字段(或计算表达式的结果)的最大值.最小值,计算和.平均值等.ES作为 ...

  5. Elasticsearch(9) --- 聚合查询(Bucket聚合)

    Elasticsearch(9) --- 聚合查询(Bucket聚合) 上一篇讲了Elasticsearch聚合查询中的Metric聚合:Elasticsearch(8) --- 聚合查询(Metri ...

  6. ElasticSearch 2 (34) - 信息聚合系列之多值排序

    ElasticSearch 2 (34) - 信息聚合系列之多值排序 摘要 多值桶(terms.histogram 和 date_histogram)动态生成很多桶,Elasticsearch 是如何 ...

  7. ElasticSearch 2 (31) - 信息聚合系列之时间处理

    ElasticSearch 2 (31) - 信息聚合系列之时间处理 摘要 如果说搜索是 Elasticsearch 里最受欢迎的功能,那么按时间创建直方图一定排在第二位.为什么需要使用时间直方图? ...

  8. ElasticSearch 2 (30) - 信息聚合系列之条形图

    ElasticSearch 2 (30) - 信息聚合系列之条形图 摘要 版本 elasticsearch版本: elasticsearch-2.x 内容 聚合还有一个令人激动的特性就是能够十分容易地 ...

  9. Elasticsearch学习之深入聚合分析二---案例实战

    以一个家电卖场中的电视销售数据为背景,来对各种品牌,各种颜色的电视的销量和销售额,进行各种各样角度的分析,首先建立电视销售的索引,然后 添加几条销售记录 PUT /tvs { "mappin ...

随机推荐

  1. BitMap的简单实现

    面试结束的这些日子好几次接触到BitMap这个东西.到底是啥呢,究其原因就是虽然它的使用条件较为苛刻,但是它对应的时间复杂度和空间复杂度真的是惊人的好. 首先是根据其思想先写了一个比较差的实现代码: ...

  2. UVa 10828 Back to Kernighan-Ritchie (数学期望 + 高斯消元)

    题意:给定一个 n 个结点的有向图,然后从 1 结点出发,从每个结点向每个后继结点的概率是相同的,当走到一个没有后继结点后,那么程序终止,然后问你经过每个结点的期望是次数是多少. 析:假设 i 结点的 ...

  3. WORD文档中插入页码的问题

    原文链接:http://www.360doc.com/content/11/0216/15/849254_93539436.shtml 一.页码从第二页开始1.选择“插入-页码”,打开“页码”对话框. ...

  4. leetcode - [1]Reverse Words in a String

    Question: Reverse Words in a String Given an input string, reverse the string word by word. For exam ...

  5. (转第二方案)在 ASP.NET 環境下使用 Memcached 快速上手指南

    转自:http://blog.miniasp.com/post/2010/01/27/Memcached-for-ASPNET-Quick-Start-Guide.aspx 之前一直想研究 Memca ...

  6. Mac-控制台更新svn版本

    brew install subversion 直接安装svbversion至最新版本

  7. spring boot jpa 多条件组合查询带分页的案例

    spring data jpa 是一个封装了hebernate的dao框架,用于单表操作特别的方便,当然也支持多表,只不过要写sql.对于单表操作,jpake可以通过各种api进行搞定,下面是一个对一 ...

  8. set_magic_quotes_runtime set_magic_quotes_gpc

    set_magic_quotes_runtime(0); 可以修改php.ini中 magic_quotes_runtime boolean的设置 当你的数据中有一些\"'这样的字符要写入到 ...

  9. hdu4742

    题意:给定3维的n(<=100000)个点,求最长不下降子序列长度(对于1和2两个点,2可以放在1后面,x1<=x2,y1<=y2,z1<=z2 ),并求出有多少种方案. 思路 ...

  10. MVC使用TempData将返回的string传到另一个控制器页面中显示!

    我需要把数据库中查询出的数据,传递到另一个控制器的页面去显示. https://blog.csdn.net/ma_jiang/article/details/8164212 看了上面这篇文章,反应过来 ...