SpringBoot 4.7 Starter Elasticsearch搜索引擎集成【全文检索】

轻萱大大_3005

轻萱大大_3005

2026-08-07

293人浏览

原创

必须使用 spring data elasticsearch 5.3.2 与 elasticsearch 8.15.0/8.15.1 组合,配置 tls+api key 认证,定义 ik 分词器的 @document 实体,通过 searchhits 获取高亮结果,启动时自动创建索引并验证中文全文检索。

springboot 4.7 starter elasticsearch搜索引擎集成【全文检索】

要在 SpringBoot 4.7 中完成 Elasticsearch 搜索引擎集成并实现可运行的全文检索功能,必须严格匹配 Spring Data Elasticsearch 5.3+ 与 Elasticsearch 8.15+ 的版本组合,否则启动时会因客户端协议变更直接抛出 java.lang.NoClassDefFoundError: co/elastic/clients/elasticsearch/_types/analysis/CustomAnalyzer 类缺失异常。

确认版本兼容性

SpringBoot 4.7 不再支持旧版 Transport Client 或 RestHighLevelClient,仅兼容基于 Elasticsearch Java API Client(v8.15+)的 Spring Data Elasticsearch 5.3.x。打开 pom.xml,检查以下依赖是否精确匹配:

【必须使用 spring-data-elasticsearch 5.3.2,不可用 5.2.x 或 5.4.x】


  org.springframework.boot
  spring-boot-starter-data-elasticsearch
  5.3.2

同时确保本地 Elasticsearch 实例为 8.15.0 或 8.15.1 —— 8.16.0 已移除 _search?typed_keys 兼容入口,会导致 ElasticsearchException: [illegal_argument_exception] unknown parameter [typed_keys] 报错。

配置 Elasticsearch 连接

在 application.yml 中启用 TLS 认证和 API key 认证双模式(Elasticsearch 8.15 默认强制启用安全模块):

spring:
  elasticsearch:
    uris: https://localhost:9200
    username: elastic
    password: ${ES_PASSWORD:changeme}
    client:
      reactive: false
      rest:
        connection-timeout: 5000
        read-timeout: 15000

注意:若跳过证书校验(仅限开发),需额外添加 JVM 参数:-Djavax.net.ssl.trustStore=/dev/null -Djavax.net.ssl.trustStorePassword=changeit,否则会卡在 SSLHandshakeException。

定义文档实体与分词策略

方法一:使用 @Document 声明索引并绑定 IK 分词器(需提前在 ES 8.15 中安装 ik 插件 v8.15.0)

@Document(indexName = "articles")
public class Article {
  @Id
  private String id;
  @Field(type = FieldType.Text, analyzer = "ik_max_word", searchAnalyzer = "ik_smart")
  private String title;
  @Field(type = FieldType.Text, analyzer = "ik_max_word")
  private String content;
  @Field(type = FieldType.Keyword)
  private String author;
}

Nanonets
Nanonets

Nanonets是一款用于文档数据抽取和业务流程自动化的 AI 工具。

下载

方法二:若不依赖 IK,改用内置 standard 分词器,但中文检索效果将严重劣化——例如搜索“人工智能”无法命中含“AI”或“智能”的文档。

编写 Repository 接口与高亮查询

第一步:继承 ElasticsearchRepository 并声明自定义方法

public interface ArticleRepository extends ElasticsearchRepository

{
  List
findByTitleContaining(String keyword);
  @Query("{\"query\":{\"match\":{\"title\":{\"query\":\"?0\",\"analyzer\":\"ik_smart\"}}},\"highlight\":{\"fields\":{\"title\":{}}}}")
  SearchHits
searchWithHighlight(String keyword);
}

第二步:在 Service 层调用高亮结果解析

SearchHits

hits = articleRepository.searchWithHighlight("机器学习");
for (SearchHit
hit : hits) {
  Map> highlight = hit.getHighlightFields();
  if (highlight.containsKey("title")) {
    String highlighted = highlight.get("title").get(0); // 取第一个高亮片段
    System.out.println(highlighted);
  }
}

这一步必须用 SearchHits 而非 List,否则高亮字段不会被注入到返回对象中。

启动应用并验证索引自动创建

1. 启动 SpringBoot 应用,观察控制台日志:
✅ 出现 Created index 'articles' with settings {...} 表示映射成功
❌ 若报错 index_not_found_exception,说明 @Document 中的 indexName 值未被识别,检查类是否被 ComponentScan 扫描到

2. 向 http://localhost:9200/articles/_doc POST 一条测试数据(Content-Type: application/json):
{ "id": "1", "title": "SpringBoot 集成 Elasticsearch 全文检索实战", "content": "本文详解 SpringBoot 4.7 如何对接 Elasticsearch 8.15 实现毫秒级中文搜索", "author": "dev" }

3. 发起 GET 请求:http://localhost:8080/api/search?q=全文检索,响应体中应包含 "highlight":{"title":["SpringBoot 集成 Elasticsearch <em>全文检索</em>实战"]}

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
spring框架介绍
spring框架介绍

本专题整合了spring框架相关内容,想了解更多详细内容,请阅读专题下面的文章。

2025.08.06

2151

22

Java Spring Security 与认证授权
Java Spring Security 与认证授权

本专题系统讲解 Java Spring Security 框架在认证与授权中的应用,涵盖用户身份验证、权限控制、JWT与OAuth2实现、跨站请求伪造(CSRF)防护、会话管理与安全漏洞防范。通过实际项目案例,帮助学习者掌握如何 使用 Spring Security 实现高安全性认证与授权机制,提升 Web 应用的安全性与用户数据保护。

2026.01.26

397

25

什么是搜索引擎
什么是搜索引擎

搜索引擎是一种互联网工具,用于帮助用户在网上查找信息。搜索引擎的目标是提供最准确、最有价值的搜索结果,使用户能够快速找到所需的信息。本专题为大家提供搜索引擎相关的各种文章、以及下载和课程。

2023.08.02

2773

5

有哪些目录搜索引擎
有哪些目录搜索引擎

目录搜索引擎有Google、Bing、Yahoo、Baidu、DuckDuckGo等。想了解更多目录搜索引擎的相关内容,可以阅读本专题下面的文章。

2023.11.06

25908

1

搜索引擎营销的主要模式
搜索引擎营销的主要模式

搜索引擎营销的主要模式包括:1. 竞价排名(ppc);2. 搜索引擎优化(seo);3. 本地搜索营销;4. 购物广告;5. 视频广告;6. 展示广告;7. 社交媒体营销;8. 移动广告。想了解更多搜索引擎营销的相关内容,可以阅读本专题下面的文章。

2024.05.20

2489

4

Elasticsearch 从入门到搜索引擎实战
Elasticsearch 从入门到搜索引擎实战

本专题带你从零掌握 Elasticsearch 分布式搜索引擎。深入解析倒排索引核心原理,涵盖单机与 Docker 环境搭建、IK 中文分词器配置及索引文档的 CRUD 操作。通过丰富的 Query DSL 实战案例,详解布尔查询、聚合分析与高亮显示,助你快速构建毫秒级响应的企业级高性能搜索服务。

2026.05.12

39

10

Elasticsearch 高级查询与性能优化
Elasticsearch 高级查询与性能优化

本专题深入解析 Elasticsearch 高级查询与性能优化实战。详解 Bool 复合查询、复杂过滤及聚合分析技巧,解决多条件精准检索难题。从索引设计、JVM 调优到硬件规划,全方位分享 Filter 缓存、深分页优化及集群架构调优策略,助你突破性能瓶颈,打造毫秒级响应的高并发企业级搜索服务。

2026.05.12

64

10

Elasticsearch 企业级开发与运维实践专题
Elasticsearch 企业级开发与运维实践专题

本专题聚焦 Elasticsearch 企业级开发与运维实战。深入解析生产环境集群架构规划、节点角色分离及冷热数据分层策略。涵盖索引生命周期管理(ILM)、安全权限控制、快照备份及全链路监控告警体系搭建。通过分享高可用部署与故障排查经验,助你构建安全、稳定且可扩展的企业级分布式搜索平台。

2026.05.12

41

10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程