当前位置: 首页 > news >正文

es数据导出

有大数据量导出的需求

整体思路:分页查询es,一页查询2000条,下一页查询的截止时间取上一页最后一条记录的创建时间(因为分页是按照创建时间逆序排列的),组装最后导出的list,利用EasyExcel导出到excel表里。

结果实际测试中遇到一些问题,记录一下

(1)少量数据没问题

(2)数据多时,excel导出报错了,.xls最大只支持65535行  --->调整成.xlsx多个sheet,一个sheet 10w条数据,改成分批写入excel(避免一个大list OOM)

(3)数据条数有问题,es查询某个时间区间数据条数和导出的excel里的条数不一致,导出的总是少一些  -->

解决办法:

        一开始我发现es的时间区间查询用的from to,后来直接改成gte lte,也就是闭区间,想着这样下一页和上一页同一秒如果有重复订单也不会遗漏吧。

        但这样导出会有重复数据,于是又改造了一下把上一页数据的id都保存下来,下一页查询要导出时,过滤下上一页的id,如果已经存在,则不必加入导出队列

        但这样发现导出的条数总是少一些,导出数量越多缺失的越多!到底哪里有问题呢,后来从es的kibbana命令看突然发现一个问题,es的时间是带毫秒的,而我查出来之后转成的date只到秒,所以,第一页的创建时间如果是40秒.738Z,解决办法分页查询的下一页的截止时间是上一页截止时间+1秒。再次导出,总数对上了,终于解决了,但这里估计细究还是有一个小问题(如果一秒内有2000+数据)那这里可能就死循环了。

相关文章:

  • Unity Post Processing 小记 【使用泛光实现灯光亮度效果】
  • 第2讲、Tensor高级操作与自动求导详解
  • gradle eclipse [.project .classpath .settings]
  • 【有啥问啥】深入理解 Layer Normalization (LayerNorm):深度学习的稳定基石
  • 【物理学】电磁学——电动势
  • 说一下Drop与delete区别
  • Kafka批量消费部分处理成功时的手动提交方案
  • 页面需要重加载才能显示的问题修改
  • openstack热迁移、冷迁移、疏散
  • SQL注入原理及防护方案
  • 基于BenchmarkSQL的OceanBase数据库tpcc性能测试
  • Java异常处理全面指南:从基础到高级实践
  • [MCU]SRAM
  • 路由协议基础
  • 【JS-Leetcode】2621睡眠函数|2629复合函数|2665计数器||
  • 2025上海车展 | 移远通信重磅发布AR脚踢毫米波雷达,重新定义“无接触交互”尾门
  • C++之异常
  • (云计算HCIP)HCIP全笔记(九)本篇介绍操作系统基础,内容包含:操作系统组成、分类和定义,Linux的特性结构和Linux版本分类
  • 使用Three.js搭建自己的3Dweb模型(从0到1无废话版本)
  • 基于WebRTC技术,EasyRTC音视频实时通话助力全网会议的智能化转型
  • 中国人民银行行长潘功胜会见世界银行行长彭安杰
  • 网络达人“拿”别人的视频为自己带货赚佣金,法院判决赔偿1.4万元
  • 交通枢纽、产业升级,上海松江新城有这些发展密码
  • 巴基斯坦最近“比较烦”:遣返阿富汗人或致地区局势更加动荡
  • 石磊当选河北秦皇岛市市长
  • 我国成年国民综合阅读率82.1%,数字化阅读接触率首超80%