ES的DSL查询,按照时间段分组统计之date_histogram

复制代码
            <div id="content_views" class="htmledit_views">
                <h4><a name="t0"></a>1. 需求</h4> 

对于es保存的数据,需要根据其时间格式或时间戳格式的字段进行分组统计,计算每天或每小时的某字段统计值

2. 使用方式
c 复制代码
{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "status": "0"
          }
        }
      ],
      "must_not": [],
      "should": []
    }
  },
  "from": 0,
  "size": 0,
  "sort": [],
  "aggs": {
    "dateAgg": {
      "date_histogram": {
        "field": "timestamp",
        "offset": "-8h",
        "format": "yyyy-MM-dd",
        "calendar_interval": "1d",
        "order": [
          {
            "timeSum": "desc"
          }
        ]
      },
      "aggs": {
        "timeSum": {
          "sum": {
            "field": "statusDurationSecond"
          }
        }
      }
    }
  }
}
3. 注意点
  • offset: -8h:是因为es默认是按照UTC的时间进行查询的,所以需要减掉8小时

  • calendar_interval:可选内容有

    java 复制代码
       
       
       
        
    * 
           
           
           
            
            
            
           
           
           
    
           
           
           
    
            
            
            
             
             毫秒:1ms 10ms
            
            
            
           
           
           
    
        
    * 
           
           
           
            
            
            
           
           
           
    
           
           
           
    
            
            
            
             
             秒: second/1s 10s
            
            
            
           
           
           
    
        
    * 
           
           
           
            
            
            
           
           
           
    
           
           
           
    
            
            
            
             
             分钟: minute/1m 10m
            
            
            
           
           
           
    
        
    * 
           
           
           
            
            
            
           
           
           
    
           
           
           
    
            
            
            
             
             小时: hout/1h 2h
            
            
            
           
           
           
    
        
    * 
           
           
           
            
            
            
           
           
           
    
           
           
           
    
            
            
            
             
             天: day/
             
             1d 
            
            
            
           
           
           
    
        
    * 
           
           
           
            
            
            
           
           
           
    
           
           
           
    
            
            
            
             
             星期: week/1w 
            
            
            
           
           
           
    
        
    * 
           
           
           
            
            
            
           
           
           
    
           
           
           
    
            
            
            
             
             月: month/1M 
            
            
            
           
           
           
    
        
    * 
           
           
           
            
            
            
           
           
           
    
           
           
           
    
            
            
            
             
             季度: quarter/1q 
            
            
            
           
           
           
    
        
    * 
           
           
           
            
            
            
           
           
           
    
           
           
           
    
            
            
            
             
             年: year/1y 
            
            
            
           
           
           
    
       
    
       
       
       
  • "format": "yyyy-MM-dd":只有date类型可以format,这里分组字段如果是long类型时间戳,format的结果是下图格式,无意义

相关推荐
程序员黑豆1 小时前
Java字符串详解
java·前端·ai编程
无我Code2 小时前
开发者-2026年中总结
前端·面试·程序员
EntyIU3 小时前
NFS离线部署
java
浮生望4 小时前
React 受控与非受控组件:从表单状态管理到实时校验的完整实践
前端
糖墨夕4 小时前
第二章:AI Agent 到底是个啥?—— 用生活场景把概念讲明白
前端
Csvn5 小时前
⚡ content-visibility: auto —— 长页面渲染提速的隐藏神器,白捡的性能优化
前端
用户938515635075 小时前
深入理解 Next.js:从 SPA 的 SEO 问题到约定式路由与 SSR 原理
前端·后端·全栈
snow@li5 小时前
web:前端500知识点/速查手册
前端
OH_TPC6 小时前
HarmonyOS APP开发---“滤镜大师“图像处理App,需要用到这个库
java·图像处理·华为·harmonyos·鸿蒙
kyriewen7 小时前
今年裁了16万技术人——但字节前端岗反而涨了23%
前端·javascript·面试