news 2026/4/16 18:10:16

SpringBoot 数据库同步 Elasticsearch 性能优化

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SpringBoot 数据库同步 Elasticsearch 性能优化

文章目录

  • 前言
  • 一、原始实现
  • 二、总觉得哪里不对劲?
  • 三、 意想不到的收获
  • 总结

前言

系统引入 Elasticsearch 来支持更高效的查询场景 (以下简称 ES). 就需要将数据库数据同步到 ES 中. 方案选择是分批从 DB 中读取数据再分批写入ES 中.


一、原始实现

读取:for(inti=0;i<times;i++){List<Order>saleList=salesDataGateway.batchList(query);writeEsKit.doWrite(saleList);query.setStartIndex(maxid+1);}publicclassOrderimplementsSerializable{@JsonProperty("geo_cd")privateStringgeoCd;@JsonProperty("fiscal_year")privateStringfiscalYear;}写入ES:BulkRequestbulk=newBulkRequest();bulk.timeout(timeOut);for(Orderitem:saleList){bulk.add(newIndexRequest(indexName).id(item.getOrderId()).source(JsonUtil.object2Json(item),XContentType.JSON));}Client.bulk(bulk);
这段代码平稳运行了一年多,一张 index 最多要写入500多万数据,耗时约2小时.因为一条订单260多个字段,所以大家也都觉得就得这么长时间.汇报得时候也理直气壮.

二、总觉得哪里不对劲?

总觉得这里怪怪的.代码逻辑先从数据库查出数据.又使用 @JsonProperty 来命名转换.最后格式化为 JSON 写入.而格式化这个操作在处理大实体类时是有性能损耗的.所以我想是不是可以有别的方式.比如去掉中间商赚差价....
for(inti=0;i<times;i++){List<HashMap<String,Object>>saleList=salesDataGateway.batchListMap(query);writeEsKit.doWrite(saleList);query.setStartIndex(maxid+1);}BulkRequestbulk=newBulkRequest();bulk.timeout(timeOut);for(HashMap<String,Object>item:saleList){bulk.add(newIndexRequest(indexName).id(item.getOrderId()).source(item));}

三、 意想不到的收获

ES 支持Map 写入.所以拿的就是Map,写入同样是Map.不兜圈子直接搞.写入耗时从2小时直接缩短到29分钟.觉得它耗时?没想到它这么耗时!!

总结

为领导跟老板汇报提供了素材.

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 11:08:32

构建智能客服多轮对话chatflow的工程实践:从设计到优化

背景&#xff1a;多轮对话的“三座大山” 做智能客服最怕什么&#xff1f;最怕用户说“我刚才不是已经告诉你了吗”。 &#xfffd;上下文丢失、意图漂移、槽位反复确认&#xff0c;这三座大山把多少项目卡死在上线前夜。 上下文丢失&#xff1a;HTTP无状态&#xff0c;每次请…

作者头像 李华
网站建设 2026/4/16 10:13:29

如何通过Markdown Viewer实现浏览器中的高效文档预览体验

如何通过Markdown Viewer实现浏览器中的高效文档预览体验 【免费下载链接】markdown-viewer Markdown Viewer / Browser Extension 项目地址: https://gitcode.com/gh_mirrors/ma/markdown-viewer 在日常工作学习中&#xff0c;我们经常需要查看Markdown格式的文档&…

作者头像 李华
网站建设 2026/4/16 13:32:27

视频超分辨率工具Video2X:AI驱动的视频无损放大解决方案

视频超分辨率工具Video2X&#xff1a;AI驱动的视频无损放大解决方案 【免费下载链接】video2x A lossless video/GIF/image upscaler achieved with waifu2x, Anime4K, SRMD and RealSR. Started in Hack the Valley II, 2018. 项目地址: https://gitcode.com/GitHub_Trendin…

作者头像 李华
网站建设 2026/4/16 13:41:51

解决视频下载难题的零门槛工具:无水印+断点续传 | 3步极速搞定

解决视频下载难题的零门槛工具&#xff1a;无水印断点续传 | 3步极速搞定 【免费下载链接】BiliDownload Android Bilibili视频下载器 项目地址: https://gitcode.com/gh_mirrors/bi/BiliDownload 你是否遇到过想保存B站视频却找不到简单方法的困扰&#xff1f;BiliDown…

作者头像 李华
网站建设 2026/4/16 10:22:13

2026 AI自动化测试工具TOP 10盘点

在敏捷开发与持续交付的浪潮下&#xff0c;传统的人工测试与僵化的自动化脚本已难以支撑业务的快速迭代。AI测试服务的崛起&#xff0c;不仅解决了脚本维护成本高、复杂场景覆盖难等痛点&#xff0c;更通过智能化手段实现了测试全生命周期的效能跃升。本次盘点将聚焦全球领先的…

作者头像 李华