在大二上学期初学习微服务时便接触了elasticsearch的相关概念,但一直没找到一个练手的好机会。就在最近(本文编写于2025-12-22),我参与的一项学校项目中我负责的部分用到了es来实现搜索功能,于是我完成后便立刻写此博文来进行总结
什么是elasticsearch?
Elasticsearch(以下简称es) 是一个开源的、分布式的搜索和分析引擎,建立在 Apache Lucene 之上。它被设计用于处理海量数据,并提供近乎实时的搜索能力(来自网络)
你可以把es看作是一个功能十分强大的搜索引擎服务器,但它能做到的绝不仅仅是搜索这么简单
es的一个具有代表性的特性是基于倒排索引技术的高性能全文搜索,能够对文本进行快速、复杂的搜索(包括模糊搜索、同义词、词语匹配等),并且支持多种语言的分词器
此外,es的分布式与可扩展性也是鲜明的特点。数据可以自动分片(Shard)并分布到多台服务器(节点)上,并且可以轻松地通过增加节点来扩展容量和处理能力,支持PB级数据
es的更多概念与特性请访问es官方文档(此次我使用的es版本为8.13.2):
项目实例
此项目基于ruoyi框架进行二次开发
下载
这次我完成的是一个学校失物招领项目,而关于失物帖的搜索就用到了es
首先要在es的官网下载es(我的版本为9.2.1),官网可以直接从上面那个外链进入
如果你需要在浏览器进行直观的索引库操作(推荐),你需要下载kibana:
基本部署及操作
下载完成以后进入你的本地es目录,运行**./bin/elasticsearch.bat(可以把脚本配置到路径环境变量中以便启动),看到命令行窗口一大串的输出时应该就是启动成功了,可以访问localhost:9200**来验证一下。访问时需要输入用户名和密码,用户名为elastic,初始的密码需要从命令行窗口中寻找一串随机字符串密码,复制粘贴就行。登陆成功以后浏览器会在网页上输出:

这就证明es启动成功了
接着启动kibana,运行**./bin/kibana.bat,稍等几分钟,使用浏览器访问localhost:5601**,登录以后点击左上角展开菜单栏找到开发工具(dev tools):

现在,你可以在控制台利用DSL语句操作索引库和文档了,具体语法规范在官方文档也会有清晰的展示,这里不再赘述
后端调用
接下来我们需要利用java后端集成es
第一步便是要在项目中引入es相关依赖:
1 |
|
项目中会用到json序列化及实现java EE标准,于是引入了jackson和jakarta
现在很多企业抛弃了es 7.x而去拥抱8.x,关于版本问题,我本人感觉8.x比7.x的API好用不少(
连接es我们需要对es客户端进行配置,可以在application.xml中增加elastic配置项:
1 | elastic: |
连接es可以使用用户名密码或apiKey通过验证,这里我使用用户名密码,所以apiKey这个配置项可以不用
编写配置类:
1 |
|
这里是使用https协议,必须配置ssl才可正常连接
编写controller(增删改查)
1 |
|
编写service接口及实现类
1 | package com.ruoyi.lostandfound.service; |
1 |
|
其中,查的逻辑相对复杂,这里有两个参数,keyword为查找的关键词,而ids为从mysql内返回的允许查找的文章id
,返回多个结果,将结果用列表进行存储
小结
这里我只使用了es的增删改查功能,相对简单,如果有哪个地方不懂,建议查看官方文档

说些什么吧!