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

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+数据)那这里可能就死循环了。

http://www.xdnf.cn/news/2436.html

相关文章:

  • Vue中Axios实战指南:高效网络请求的艺术
  • Excel如何安装使用EPM插件并且汉化?
  • uniapp+vue3表格样式
  • Golang | Builder模式
  • 大模型——Suna集成浏览器操作与数据分析的智能代理
  • Transformer数学推导——Q25 分析视觉-语言模型中区域注意力(Region Attention)的边界框投影公式
  • Ubuntu 22.04.4操作系统初始化详细配置
  • WPF使用SQLite与JSON文本文件结合存储体侧平衡数据的设计与实现
  • 【设计模式】享元模式
  • .aar中申请权限时使用了android:maxSdkVersion导致主App的权限组找不到对应的权限
  • 【机器学习-线性回归-4】线性回归中的最优解:从数学原理到实践应用
  • ESP32开发入门(四):ESP32-s3多串口开发实践
  • 深度整合Perforce P4+Jira+Confluence:游戏开发团队协作工具链搭建指南
  • 力扣热题——统计完全子数组的数目
  • 【MQ篇】RabbitMQ之死信交换机!
  • Node.js CSRF 保护指南:示例及启用方法
  • react slot传递
  • Python 操作 Excel 插入图表:解锁数据可视化的高效密码
  • 使用vue2 开发一个纯静态的校园二手交易平台-前端项目练习
  • WEBSTORM前端 —— 第2章:CSS —— 第3节:背景属性与显示模式
  • SpringMVC 通过ajax 前后端数据交互
  • 空间矩阵的思考
  • SpringMVC框架
  • 二、Web服务常用的I/O操作
  • HTML5 新特性详解:语义化标签、表单与音视频嵌入
  • pytorch写张量pt文件,libtorch读张量pt文件
  • 网络基础概念
  • HCIP知识点总结思维导图
  • Redis远程链接应用案例
  • 【计算机网络物理层】从信号传输到介质选型的核心技术解析