SpringBoot 3.x整合Elasticsearch:从零搭建高性能搜索服务
告别数据库模糊查询的低效,基于SpringBoot 3.x + Elasticsearch 8.x构建毫秒级响应的搜索服务!
本文将手把手带你实现 SpringBoot 3.x 与 Elasticsearch 8.x 的深度整合,涵盖从环境搭建、数据索引到复杂查询、高亮显示的完整流程,助你轻松应对海量数据检索挑战。
文章目录
-
-
- 一、为什么选择 Elasticsearch?
- 二、环境准备
- 三、核心依赖配置
- 四、数据建模与索引映射
-
- 1. 实体类注解
- 2. 自定义索引设置
- 五、核心操作实现
-
- 1. 索引管理
- 2. 数据CRUD
- 3. 复杂查询(使用Java API Client)
- 六、性能优化实战
-
- 1. 批量写入提升10倍吞吐
- 2. 查询调优技巧
- 七、关键问题排查
- 八、性能对比测试(1百万数据)
- 结语
-
一、为什么选择 Elasticsearch?
- 近实时搜索:数据变更后秒级可见
- 分布式高性能:轻松处理PB级数据
- 相关性评分:智能排序搜索结果
- 丰富查询语法:支持全文、模糊、地理空间等查询
二、环境准备
-
Elasticsearch 8.x
docker run -d --name es8 -p 9200:9200 -p 9300:9300 \ -e "discovery.type=single-node" \ -e "ES_JAVA_OPTS=-Xms1g -Xmx1g" \ docker.elastic.co/elasticsearch/elasticsearch:8.11.1
-
SpringBoot 3.1+ (JDK 17+)
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.1.5</version> </parent>
三、核心依赖配置
<dependencies><!-- Spring Data Elasticsearch --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId></dependency><!-- 官方Java Client --><dependency><groupId>co.elastic.clients</groupId><artifactId>elasticsearch-java</artifactId><version>8.11.1</version></dependency>
</dependencies>
配置application.yml:
spring:elasticsearch:uris: https://localhost:9200 # 注意8.x默认开启SSLusername: elasticpassword: your_password # 启动时生成的密码
四、数据建模与索引映射
1. 实体类注解
@Document