【Elasticsearch】`auto_date_histogram`聚合功能详解

ops/2025/2/7 18:40:18/

 

1.功能概述

`auto_date_histogram`是 Elasticsearch 提供的一种时间分桶聚合功能,它可以根据数据分布自动调整分桶的间隔,以生成指定数量的分桶。与传统的`date_histogram`不同,`auto_date_histogram`不需要用户手动指定时间间隔,而是根据数据自动选择最佳间隔。

 

 

2.基本语法

`auto_date_histogram`的基本语法如下:

 

 

```json

{

  "aggs": {

    "my_auto_date_histo": {

      "auto_date_histogram": {

        "field": "date",

        "buckets": 10

      }

    }

  }

}

```

 

 

 

• `field`:指定用于聚合的日期字段。

 

• `buckets`:目标分桶数量,默认为10。

 

 

3.参数详解

 

• `buckets`:指定目标分桶数量,返回的分桶数量将小于或等于该值。

 

• `format`:指定日期格式,例如`"yyyy-MM-dd"`。

 

• `time_zone`:指定时区,支持 ISO 8601 UTC 偏移量(如`+01:00`)或时区 ID(如`America/New_York`)。

 

• `minimum_interval`:设置最小间隔,可选值包括`year`、`month`、`day`、`hour`、`minute`、`second`。

 

• `missing`:指定缺失值的处理方式,可以将缺失值视为某个特定日期。

 

 

4.示例用法

以下是一个使用`auto_date_histogram`的示例,目标是根据`timestamp`字段生成约20个分桶,并按`yyyy-MM-dd`格式化日期:

 

 

```json

GET /my_index/_search

{

  "size": 0,

  "aggs": {

    "messages_over_time": {

      "auto_date_histogram": {

        "field": "timestamp",

        "buckets": 20,

        "format": "yyyy-MM-dd"

      }

    }

  }

}

```

 

 

 

5.自动选择间隔

`auto_date_histogram`会根据数据分布自动选择合适的间隔,以确保返回的分桶数量接近目标值。可能的间隔包括:

 

• 秒:1、5、10、30 的倍数

 

• 分钟:1、5、10、30 的倍数

 

• 小时:1、3、12 的倍数

 

• 天:1、7 的倍数

 

• 月:1、3 的倍数

 

• 年:1、5、10、20、50、100 的倍数。

 

 

6.最佳实践

 

• 设置最小间隔:使用`minimum_interval`参数可以提高聚合效率。

 

• 处理时区差异:使用`time_zone`参数确保分桶基于正确的时区。

 

• 结合其他聚合:可以与`sum`、`avg`等其他聚合功能结合,进行更复杂的时间分析。

 

 

7.常见问题

 

• 字段映射:确保聚合字段正确映射为日期类型。

 

• 分桶数量:实际返回的分桶数量可能因数据分布而略有不同。

 

• 夏令时处理:在涉及夏令时转换的时区中,分桶可能会有细微差异。

 

通过`auto_date_histogram`,用户可以更灵活地处理时间序列数据,而无需手动调整分桶间隔,从而提高数据分析的效率和准确性。


http://www.ppmy.cn/ops/156507.html

相关文章

vue3-封装自定义 Hooks

在 Vue 3 中,setup 函数是 Composition API 的核心部分,它允许你使用响应式状态和其他 Composition API 功能。然而,就像在其他框架中的组件方法或生命周期钩子中一样,setup 函数内定义过多逻辑可能会使代码变得难以阅读和维护。为…

IDEA构建JavaWeb项目,并通过Tomcat成功运行

目录 一、Tomcat简介 二、Tomcat安装步骤 1.选择分支下载 2.点击下载zip安装包 3.解压到没有中文、空格和特殊字符的目录下 4.双击bin目录下的startup.bat脚本启动Tomcat 5.浏览器访问Tomcat 6.关闭Tomcat服务器 三、Tomcat目录介绍 四、WEB项目的标准结构 五、WEB…

1.5 Go切片使用

一、切片简介 切片是相同类型元素的可变长度的集合,通常表示[]type。同一个切片中的元素类型都是一个类型的。它看上去跟数组一样,但是没有长度 二、切片的组成 每一个切片由三个部分组成 底层数组的指针:指向切片实际存储数据的底层数组…

Android_P_Audio_系统(1) — Auido 系统简介

1 音频基础 1.1 声音的三要素 1. 音量(Volume) 也叫做响度(Loudness),人耳对声音强弱的主观感觉就是响度,响度和声波振动的幅度有关。一般说来,声波振动幅度越大则响度也越大。当我们用较大的…

UE5 创建自定义工具上下文的方法

自定义工具管理类上下文 工具管理类:MyToolsManager,管理类依赖类:ContextQueriesAPI、ContextTransactionsAPI // Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.…

Spring Boot 实例解析:从概念到代码

SpringBoot 简介: 简化 Spring 应用开发的一个框架整合 Spring 技术栈的一个大整合J2EE 开发的一站式解决方案优点:快速创建独立运行的 Spring 项目以及与主流框架集成使用嵌入式的 Servlet 容器,应用无需打成 war 包,内嵌 Tomcat…

DeepSeek横空出世,AI格局或将改写?

引言 这几天,国产AI大模型DeepSeek R1,一飞冲天,在全球AI圈持续引爆热度,DeepSeek R1 已经是世界上最先进的 AI 模型之一,可与 OpenAI 的新 o1 和 Meta 的 Llama AI 模型相媲美。 DeepSeek-V3模型发布后,在…

Unity VideoPlayer播放视屏不清晰的一种情况

VideoPlayer的Rnder Texture可以设置Size,如果你的视屏是1920*1080那么就设置成1920*1080。 如果设置成其他分辨率比如800*600会导致视屏不清晰。