ES中对于时间聚合的一些总结

news2024/9/21 7:14:33

最近在通过es统计数据时,遇到了一个问题:在进行时间范围查询后,再对时间进行聚合,此时聚合的结果会受时区影响,也就是说结果的时间戳会被转换成对应时区的时间,并且时间戳也会变成这个时间的时间戳,所以就会导致结果的时间以及时间戳和查询的时间范围不匹配。

以下是demo演示:

首先向索引中添加数据,时间字段是alarmTime,时间跨度从8月1号到9月1号
在这里插入图片描述
并且在8月27号新增了两条数据

现在对8.27到9.1按照每天统计数据量
进行查询

curl --location --request GET 'http://localhost:9200/tlp_alarm_demo/_search' \
--header 'User-Agent: Apifox/1.0.0 (https://apifox.com)' \
--header 'Content-Type: application/json' \
--data-raw '{
  "timeout": "15000ms",
  "size": "0",
  "query": {
    "bool": {
      "filter": [
        {
          "terms": {
            "ordId": [
              "1826497452249849856"
            ]
          }
        },
        {
          "range": {
            "alarmTime": {
              "gte": "1724688000000",
              "lte": "1725206357000"
            }
          }
        }
      ],
      "adjust_pure_negative": true
    }
  },
  "aggregations": {
    "x": {
      "date_histogram": {
        "field": "alarmTime",
        "format": "yyyy-MM-dd",
        "calendar_interval": "1d",
        "offset": 0,
        "order": {
          "_key": "asc"
        },
        "keyed": false,
        "min_doc_count": 0
      }
    }
  }
}'

聚合结果为:
在这里插入图片描述
可以发现返回的结果是从8.26开始了,并且doc_count变成了2

通过查阅官方文档可以发现:
在这里插入图片描述

  • 当我们在 Elasticsearch 中进行时间范围查询,然后再对这些时间进行聚合时,时区会影响结果的表示。Elasticsearch 在聚合时会根据指定的时区来处理时间段(默认为UTC),这就会会导致结果时间戳与查询的时间范围不匹配。

ES中的时区

  • Elasticsearch 默认使用 UTC 时间存储和处理时间字段。
  • 需要将时间数据按照特定时区进行存储、查询和聚合,以满足业务需求。
  • 我国属于东八区时间,是比 UTC 时间快 8 小时的时区,所以要让结果正确的显式,就需要指定时区参数

通过官方文档可以发现,在 Elasticsearch 中,参数offset 和 time_zone 都与时间处理有关,总结下来就是:
time_zone
用于指定时间字段在聚合时应使用的时区。它影响的是日期聚合的分桶方式和结果的显示。例如,如果你想按照东八区时间进行每天的聚合,而不是默认的 UTC 时间。

offset
用于在聚合时对分桶的时间进行偏移。它不改变时区,而是直接在时间轴上对分桶进行偏移。例如,如果你想让每天的分桶从上午 8 点开始而不是午夜 0 点开始,通俗的说就是,es中的按天统计是从第一天的00:00到第二天的00:00,如果希望是从第一天的08:00到第二天的08:00统计,那么就需要用offset来进行偏移。

不难发现在上述的例子中,需要使用time_zone指定时区就可以正确返回

  "aggregations": {
    "x": {
      "date_histogram": {
        "field": "alarmTime",
        "format": "yyyy-MM-dd",
        "calendar_interval": "1d",
        "offset": 0,
        "order": {
          "_key": "asc"
        },
        "keyed": false,
        "time_zone": "+08:00",
        "min_doc_count": 0
      }
    }
  }

响应数据正确
在这里插入图片描述

#总结

  • 在ES中,对于时间字段,最好使用多字段类型,而不是单一的long字段(由于 long 类型的时间戳不包含时区信息,Elasticsearch 可能在聚合或展示时间时,将这些时间戳按照默认的 UTC 时区解释并显示,导致时间范围出现不匹配)
  • 官方文档给出的时间类型定义方式
"alarmTime": {
      "type": "date",
      "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
    }
  • 在 date_histogram 聚合中明确指定时区,以避免聚合结果与查询时间范围不匹配的问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2100517.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

若楠带你初识OpenCV(1)-- 视频、图片基础处理,颜色获取

文章目录 OpenCV一、核心功能二、初识OpenCV1. 安装OpenCV2. 读取图片3. 读取灰度图4. 图片保存5. 视频文件读取6. 区域截取7. 提取RGB通道颜色8. 合并颜色通道 总结 OpenCV OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学…

SQL【2】稍稍进阶

目录 首先,怎么安装,环境怎么调。 alter——改变(此段Al) 创建于删除数据库、表格 上一节进阶 预设值default​编辑 关于插入顺序 有条件的删除DELETE FROM 表 WHERE 条件 多种语句组合查看 查看排序​编辑 LIMIT 2只取前…

输煤皮带智能巡检机器人技术方案及应用分析

输煤皮带是电厂和工业企业物料输送系统的重要组成部分。由于皮带系统通常覆盖面积大、环境复杂,传统的人工巡检方式存在效率低、危险性高等问题。为此,智能巡检机器人被引入输煤皮带系统,旨在实现无人化、智能化的巡检作业,提升系…

如何禁用USB存储设备|禁用USB储存和连接手机的方法有哪些?深度解析,四招搞定!

在企业网络安全管理中,禁用USB存储设备和限制手机连接至关重要。这不仅可以防止数据泄露,还能阻止恶意软件通过外部设备入侵。 本文将为你推荐四种行之有效的方法,帮助你全面禁用USB存储设备和连接手机的功能,让企业数据安全更有…

google浏览器禁止http自动转https

在Chrome的地址栏中输入 chrome://flags,搜索“HTTPS Upgrades”并将其设置为“Disabled”。这将禁用Chrome自动将HTTP升级到HTTPS的功能。

分享5款在不同场景提供支持的软件

​ 本文将介绍几款实用的软件工具,涵盖了从文件管理到系统优化,以及跨平台操作等多个领域。 1. 静态分析工具——Cerbero Suite Advanced ​ Cerbero Suite Advanced是一款功能强大的静态分析工具,专为逆向工程和数字取证设计。它支持多种文…

迪杰斯特拉算法——求最短路径

朴素版本(时间复杂度O(n^2)): 迪杰斯特拉算法采用的是一种贪心的策略。 用一个 dist 数组保存源点到其余各个节点的距离,dist[i] 表示源点到节点 i 的距离。初始时,dist 数组的各个元素为无…

Nginx 部署前端 Vue 项目实战指南

一、环境准备 1. 安装 Nginx 首先,需要在服务器上安装 Nginx。Nginx 是一款轻量级、高性能的 HTTP 和反向代理服务器。安装方式因操作系统而异。 Linux 系统(以 Ubuntu 为例): sudo apt-get update sudo apt-get install nginxWi…

MacOS下WKWebView设置背景透明问题

业务场景需要设置WKWebView的背景内容透明,查询到一般有两种方法: [self.webView setValue: NO forKey: "drawsBackground"]; [self.webView setValue:[NSNumber numberWithBool: YES] forKey:"drawsTransparentBackground"]; 这…

ZBrush入门使用介绍——13、Dynamesh

大家好,我是阿赵。   继续介绍ZBrush的用法。这次介绍一个可以给模型重新布线和生成形状的工具,叫做Dynamesh。 1、 重新布线 在使用Move笔刷的时候,经常会遇到一个问题 当用Move笔刷把模型拖拽出一个形状的时候,被拖出来的部…

ElasticSearch-倒排索引 文档映射

倒排索引文档映射 已有字段的Mapping修改常用Mapping参数配置Index TemplateDynamic Template 倒排索引 当数据写入 ES 时,数据将会通过 分词 被切分为不同的 term,ES 将 term 与其对应的文档列表建立一种映射关系,这种结构就是 倒排索引 为…

火车票、高铁票如何开具电子发票?12306怎么查询报销凭证是否领取?

火车票、高铁票如何开具电子发票? 众所周知,目前很多消费(衣食住行)报销都是可以开具电子发票的,但火车票目前无法开具电子发票。 火车票目前只有纸质报销凭证,报销凭证与之前的车票类似,但是…

数学建模常用工具总结

数学建模常用工具总结 绘图篇pythonMATLABLIVEGAP CHARTSApache EChartsBioLadderHiplot Pro 生物医学可视化平台Graph EditorRAWGraphs 2.0ExcalidrawPPT绘图 配色篇Color SpaceAdobe Color 素材篇手绘素材插画网iconfont-阿里巴巴矢量图标库下面四个都是实物风格的素材&#…

40天的八股文总结

四十天前报名参加了卡哥的八股文训练营,在这四十天中每周都在训练营中打卡,可以通过念出来的方式进行八股文的记忆,同时还可以听到其他训练营中的朋友们的打卡,这让人感觉非常的有动力,每天都有更强烈的记忆八股文的信…

安装win7鼠标键盘不能动原因分析及解决办法

有同学反馈安装win7鼠标键盘不能动这是怎么回事?后来研究该问题主要是原版win7没有集成usb3.0和usb3.1驱动导致,下面小编就教大家安装win7鼠标键盘不能动原因分析及解决方法。 安装win7鼠标键盘不能动原因分析: 原因:研究后发现是…

Quartz.Net_快速开始

简述 Quartz中主要分为三部分,JobDetail、Trigger、Scheduler,分别是任务、触发器、调度器,三者的关系为:Trigger控制JobDetail的执行时间和频率,而Scheduler负责将具体的Trigger与具体的JobDetail绑定 1.安装Quartz…

无需后端也能测试 CRUD:Mock.js 的强大功能

前言 在前端开发中,数据的增删改查(CRUD)操作是最常见的需求之一。 然而,在后端接口尚未就绪的情况下,前端开发者往往需要一种方法来模拟这些操作。 Mock.js 作为一个强大的前端数据模拟库,可以帮助开发…

Ubuntu 上启用 swap 内存,提高运行效率!

Ubuntu 24.04 是一个功能强大的操作系统,但有时你的电脑可能会在运行多个应用程序时耗尽内存。这会降低系统的运行速度和效率。在这种情况下,添加交换内存会有所帮助。交换内存作为一个额外的内存资源,您的计算机可以顺利处理更多的任务。 在…

如何用一次推送,毁掉一个公司?

极狐GitLab 是 GitLab 在中国的发行版,可以私有化部署,对中文的支持非常友好,是专为中国程序员和企业推出的企业级一体化 DevOps 平台,一键就能安装成功。安装详情可以查看官网指南。 本文分享如何使用极狐GitLab 17.2 发布的密钥…

这样的配置,才够格做“黑悟空”“天命人”

《黑神话:悟空》取材自中国古典名著《西游记》,玩家将扮演齐天大圣孙悟空,体验一段惊心动魄的冒险旅程,被媒体誉为中国首款“3A游戏”。 在《黑神话:悟空》发布并风靡全球之际,唯迈医疗的 Phoenix 210 亦同…