Flink同步到ES时间遇到的问题

背景

  • 使用Flink SQL把MySQL的数据同步到ES,MySQL的时间是东八区时间,同步到Elasticsearch,发现时间总是有问题。

问题

  • 1、查询出来的时间总是+8小时。

解决方案:项目中jackson配置会把UTC时间转换,所以在存入时间就-8小时转成UTC时间就没毛病。

  • 2、时间范围查询出来的数据不准。

解决方案:存入的时间有转换,范围查询要设置timeZone,否则查询不准。

附录

返回数据使用jackson验证过程

  • 范围查询核心代码
java 复制代码
  // 创建时间范围查询
   if (ObjectUtil.isNotEmpty(request.getCreateTimeStart()) || ObjectUtil.isNotEmpty(request.getCreateTimeEnd())) {
        RangeQueryBuilder createTimeRange = QueryBuilders.rangeQuery("createTime");
        // 指定时区
        createTimeRange.timeZone("GMT+8");
        if (ObjectUtil.isNotEmpty(request.getCreateTimeStart())) {
            createTimeRange.gte(cn.hutool.core.date.DateUtil.format(request.getCreateTimeStart(), "yyyy-MM-dd HH:mm:ss"));
        }
        if (ObjectUtil.isNotEmpty(request.getCreateTimeEnd())) {
            createTimeRange.lte(cn.hutool.core.date.DateUtil.format(request.getCreateTimeEnd(), "yyyy-MM-dd HH:mm:ss"));
        }
        mainQuery.filter(createTimeRange);
    }
  • 同步时转为UTC时间
sql 复制代码
TO_TIMESTAMP(DATE_FORMAT(res.createTime - INTERVAL '8' HOUR, 'yyyy-MM-dd HH:mm:ss')) as createTime
  • 增加配置
yml 复制代码
  jackson:
    locale: zh_CN
    time-zone: GMT+8
    date-format: yyyy-MM-dd HH:mm:ss
  • 会使用jackson的配置转换时间

小结

  • 理解Elasticsearch 内部固定使用 UTC 时间存储所有日期类型字段。实际上这2个问题是时间没对其的缘故,存入数据转成UTC时间,范围查询用东八区时间就没有问题。
相关推荐
Sayai9 小时前
Elasticsearch 日志检索 DSL 实战:时间范围查询、字段去重、分钟级统计与最新日志获取
大数据·运维·elasticsearch·搜索引擎·日志分析
starzy199012 小时前
Flink 优化之网络缓存优化及参数详解:从数据传输机制到反压原理的生产调优指南
网络·缓存·flink
阿狗童鞋15 小时前
Elasticsearch实战指南
大数据·elasticsearch·搜索引擎
IT大白鼠16 小时前
搜索系列 · 第 04 篇——部署实操:内网集群落地
运维·elasticsearch·nosql
Elastic 中国社区官方博客16 小时前
使用 Jev 作为 search reranker:基准测试与实现方法
大数据·运维·elasticsearch·全文检索
Elasticsearch19 小时前
签名、密封、交付:使用 Vault 和 cert-manager 进行 ECK 证书管理
elasticsearch
看浪的路人20 小时前
第5讲:Prompt 管理与版本追踪
大数据·数据库·elasticsearch
Elastic 中国社区官方博客1 天前
Kubernetes attributes processor v1:它对 EDOT Collector 意味着什么
java·大数据·elasticsearch·搜索引擎·贪心算法·kubernetes·全文检索
Elastic 中国社区官方博客1 天前
Elasticsearch Serverless 如何通过 hollow shards 将索引节点关闭次数降低 30%
大数据·数据库·elasticsearch·搜索引擎·serverless·全文检索
w***48822 天前
SpringBoot整合easy-es
spring boot·后端·elasticsearch