SpringBoot集成Elasticsearch实战

环境准备与依赖配置

我用的SpringBoot是2.7.x版本,对应选择Elasticsearch 7.17.x版本保持兼容。Maven配置关键依赖:

配置文件application.yml里需要设置集群信息:

这里特别注意网络连接问题,如果ES装在服务器上,记得开放9200端口防火墙。

实体类映射配置

创建商品实体类用于测试,注意@Document注解的indexName必须小写:

踩坑提醒:字段类型映射如果不显式指定,ES会自动推断,可能把日期字段识别成文本类型导致范围查询失效。

Repository层设计

继承ElasticsearchRepository接口就能获得基础CRUD能力:

注意命名规范,Spring Data会自动实现这些方法,无需编写实现类。

复杂查询构建

实际业务中经常需要组合查询,使用NativeSearchQueryBuilder更灵活:

高亮显示实现

搜索结果的匹配关键词需要高亮显示,配置高亮器:

性能调优经验

索引设置:分片数量根据数据量调整,建议每个分片大小控制在20-50GB

查询优化:避免深度分页,使用search_after替代from+size

连接池:调整RestClient的maxConnTotal参数,默认值在并发高时容易成为瓶颈

遇到的问题记录

最头疼的是版本兼容性问题。开始用的SpringBoot 3.0直接连不上ES 7.x,后来发现是客户端协议不匹配。另外ik分词器需要单独安装,记得下载与ES完全匹配的版本,否则启动时会报类加载错误。

测试时建议先插入几万条样本数据,因为小数据量下ES的优势不明显,还可能遇到分片未分配的问题。可以通过查看索引状态,确保所有分片都是active状态。

目前这套方案已经稳定运行三个月,查询响应时间从原来的秒级降到百毫秒内。下次准备尝试加入搜索词建议和纠错功能,有兴趣的可以继续关注后续更新。

相关推荐
星辰云-1 分钟前
基于Spring Boot的旅游景点票务系统的设计与实现(毕设项目,附完整源码)
spring boot·后端·课程设计
我命由我1234511 分钟前
SQL 检测脚本
java·数据库·sql·功能测试·单元测试·压力测试·可用性测试
Hpc_Fun27 分钟前
GPU 工作站品牌怎么比?五把可核验尺子、加权评分脚本与场景重排
java·信创·gpu工作站·品牌对比·加权评分
const_qiu28 分钟前
第四章 03:4.3 Tools —— 让 Agent 会用工具
java·人工智能
Rain的Java大神之路34 分钟前
百万并发直播弹幕系统设计全解:看懂了扇出,你就看懂了高并发的八成
java·后端·面试
\光辉岁月/1 小时前
2.异常类
java·开发语言·异常类
十年Java程序媛1 小时前
JVM 基础与 GC 垃圾回收详解|可达性分析、分代模型、垃圾收集器、STW
java·开发语言·jvm·spring boot·后端·面试
2301_32241428041 小时前
基于SSM框架的在线考试管理系统的设计与实现14750-计算机毕设 原创(免费领源码+部署教程+开发环境)
java·redis·mysql·tomcat·maven·mybatis·ssm
clz13145211 小时前
RuoYi-Cloud 新建微服务并实现服务间调用(OpenFeign 实战)
java·ruoyi
const_qiu1 小时前
第四章 06:4.6 统一入口 —— analyze() 能力收束
java·人工智能