kibana中的数据晚8个小时

kibana中的数据晚8个小时

问题描述:

在指定时间范围内查询ES中的数据时发现 数据丢失

问题分析

中国在东八区,相比于中时区多了8个小时,导致kibana自动减去8个小时。

ES默认是0时区,但是我们一般用的是北京时间东八区,因此间隔了八小时

问题解决

封装ES查询条件的时候对时间格式进行处理

  • 错误实例
        BoolQueryBuilder totalBoolQueryBilder = QueryBuilders.boolQuery();
        totalBoolQueryBilder = totalBoolQueryBilder
                .must(QueryBuilders.termQuery("id", id))
                .must(QueryBuilders.rangeQuery("absTime")
                        .gte(startDate)
                        .lt(endDate).timeZone("GMT+8"))
        ;
        NativeSearchQuery totalSearchQuery = new NativeSearchQueryBuilder()
                .build();

对应Kibana中的

 "range" : {
          "absTime" : {
            "from" : "2024-06-13T00:00:00.000Z",
            "to" : "2024-07-12T14:45:28.536Z",
            "include_lower" : true,
            "include_upper" : true,
            "time_zone" : "GMT+08:00",
            "boost" : 1.0
          }
        }
  • 正确实例

这里的办法是改变数据源,写入es中的时间数据是通用时间yyyy-MM-dd HH:mm:ss 格式的数据,并指定时区为 GMT+8

       BoolQueryBuilder totalBoolQueryBilder = QueryBuilders.boolQuery();
        totalBoolQueryBilder = totalBoolQueryBilder
                .must(QueryBuilders.termQuery("id", id))
                .must(QueryBuilders.rangeQuery("absTime")
                .gte(DateUtil.format(startDate, "yyyy-MM-dd HH:mm:ss"))
                .lt(DateUtil.format(endDate, "yyyy-MM-dd HH:mm:ss"))
                .format("yyyy-MM-dd HH:mm:ss")
                .timeZone("GMT+8"));

对应Kibana中的

          "range": {
            "absTime": {
              "from": "2024-07-06 00:00:00",
              "to": "2024-07-12 15:48:25",
              "include_lower": true,
              "include_upper": false,
              "time_zone": "GMT+08:00",
              "format": "yyyy-MM-dd HH:mm:ss",
              "boost": 1
            }
          }

idea中断点参考正确写法

img


img


image-20240718161210931

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值