news 2026/4/3 7:17:30

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/3/27 17:56:32

【电路设计】有源低通滤波器的核心原理与实战应用

1. 有源低通滤波器基础入门 我第一次接触有源低通滤波器是在设计音频放大器时遇到的噪声问题。当时发现麦克风采集的信号总是夹杂着高频干扰&#xff0c;尝试用无源RC滤波器效果不理想&#xff0c;直到使用了运放构建的有源方案才完美解决。这种滤波器不仅能有效滤除噪声&#…

作者头像 李华
网站建设 2026/3/19 23:38:19

惊爆眼球!AI应用架构师引领企业数字化转型的超强AI方案

惊爆眼球&#xff01;AI应用架构师引领企业数字化转型的超强AI方案 摘要/引言 在当今数字化浪潮席卷的时代&#xff0c;企业面临着前所未有的转型压力。如何借助AI技术实现高效、创新的数字化转型&#xff0c;成为众多企业亟待解决的关键问题。本文将由AI应用架构师的视角出发…

作者头像 李华
网站建设 2026/3/25 2:42:30

革新性歌词提取从入门到精通:全方位掌握音乐歌词管理的7个技巧

革新性歌词提取从入门到精通&#xff1a;全方位掌握音乐歌词管理的7个技巧 【免费下载链接】163MusicLyrics Windows 云音乐歌词获取【网易云、QQ音乐】 项目地址: https://gitcode.com/GitHub_Trending/16/163MusicLyrics 你是否曾在深夜反复搜索同一首歌的歌词却只得到…

作者头像 李华
网站建设 2026/4/3 2:42:50

5大模块精通AutoDock Vina:分子对接从入门到实战

5大模块精通AutoDock Vina&#xff1a;分子对接从入门到实战 【免费下载链接】AutoDock-Vina AutoDock Vina 项目地址: https://gitcode.com/gh_mirrors/au/AutoDock-Vina AutoDock Vina是一款功能强大的开源分子对接引擎&#xff0c;以其高效的计算性能和精准的对接结果…

作者头像 李华