SpringBoot整合ElasticSearch实现全文检索

因为业务需要,需要对10W+论文数据实现全文检索功能,所以需要使用一套成熟的检索框架,所以选择了SpringBoot+ElasticSearch来实现业务功能。

先说下Mysql和ElasticSearch的对比,以便更清晰直观的了解ElasticSearch

MySQLElasticsearch说明
TableIndex索引(index),就是文档的集合,类似数据库的表(table)
RowDocument文档(Document),就是一条条的数据,类似数据库中的行(Row),文档都是JSON格式
ColumnField字段(Field),就是JSON文档中的字段,类似数据库中的列(Column)
SchemaMappingMapping(映射)是索引中文档的约束,例如字段类型约束。类似数据库的表结构(Schema)
SQLDSLDSL是elasticsearch提供的JSON风格的请求语句,用来操作elasticsearch,实现CRUD

本地环境:操作系统windows10、java环境 jdk-17.0.4 、node环境16.18.1 、npm 8.19.2

准备工作

1.ElasticSearch部署

1.1 ElasticSearch下载

下载地址官网地址:Download Elasticsearch 下载windows版,我下载的是 8.11.0 版本

CSDN下载地址:https://download.csdn.net/download/qq_28147821/88571721 

下载后直接在本地解压

1.2 ES分词器elasticsearch-analysis-ik下载

我下载的是 V8.11.0 版本

官网地址:elasticsearch-analysis-ik

CSDN下载地址:https://download.csdn.net/download/qq_28147821/88571725 

分词器版本要与ES版本对应,直接下载压缩包,下载后直接在本地解压,下图是解压后内容

下一步,将ik分词器目录放到es插件目录plugins下,并改名ik

 1.3 elasticsearch启动

(1)找到启动文件elasticsearch.bat,鼠标右键点击,以管理员运行  

 

(2)运行成功后,在浏览器输入http://localhost:9200/ 弹出登陆界面

(3)重置密码 命令行进入 D:\tool\elasticsearch-8.11.0\bin 目录下 

输入命令 elasticsearch-reset-password -u elastic

将会提示是否继续,输入y 回车,将重置密码 

将账号:elastic 重置后的密码输入,即可打开连接,表示启动完成

 2.Kibana部署

Kibana是一个开源的分析和可视化平台,类似于mysql对应的navicat,设计用于和Elasticsearch一起工作。可以用Kibana来搜索,查看,并和存储在Elasticsearch索引中的数据进行交互。类似的还有Elasticsearch-head 用于浏览器插件,不过安装较为复杂,界面有点老旧,所以使用Kibana更方便。

2.1 Kibana下载

官网下载地址 https://www.elastic.co/cn/downloads/past-releases#kibana

CSDN下载地址:https://download.csdn.net/download/qq_28147821/88571707 

 Kibana需要下载和es对应的版本,所以我选择下载windows版的Kibana8.11.0版本

 解压后文件夹

 2.2 Kibana运行

解压后,保证ElasticSearch正在运行的情况下(能访问http://localhost:9200/),进入bin目录右键kibana.bat 以管理员运行。

启动成功后,在浏览器输入地址 :http://localhost:5601/即可访问kibana

如果初次启动,出现  kibana server is not ready yet. 表示kibana未能连接到ElasticSearch

(1)确保ElasticSearch已经启动

(2)查看kibana报错信息

missing authentication credentials for REST request [/_nodes?filter_path=nodes.*.version%2Cnodes.*.http.publish_address%2Cnodes.*.ip]

报错显示,缺少REST请求的身份验证凭据

原因:ES的安全认证,在此由于是测试,直接在es的config文件夹下elasticsearch.yml中,添加xpack.security.enabled: false 即可

修改完成后,重新运行elasticsearch.bat启动es

浏览器重新进入http://localhost:5601,出现以下界面,表示启动成功

点击Explore on my own 独自探索即可进入首页

(2)分词测试

点击左侧列表栏,单机Dev Tool

输入分词语句,即可进行分词处理

POST _analyze
{
  "text":"当地时间11月14日下午,应邀同美国总统拜登举行中美元首会晤,同时应邀出席亚太经合组织第三十次领导人非正式会议,受到美国加利福尼亚州州长纽森、财政部长耶伦等美方代表热情迎接。",
  "analyzer":"ik_smart"
}

分词类型分为最小切分ik_smart和最全切分ik_max_word

至此,Kibana安装完成

汉化:kibana.yml设置 i18n.locale: "zh-CN" 重启kibana即可

3.Logstash部署

Logstash是一款强大的开源数据收集引擎。它能够从不同来源收集数据,并将其动态地汇聚,进而根据我们定义的规范进行转换或者输出到我们定义的目标地址,配合ElasticSearch的使用,能够同步es的数据源,实现强大的全文检索能力。

3.1 Logstash下载

下载地址:https://www.elastic.co/cn/downloads/past-releases#logstash

CSDN下载地址:https://download.csdn.net/download/qq_28147821/88571713 

 下载版本:选择对应的8.11.0 windows版

3.2 Logstash部署

下载后解压文件夹,在config文件夹下打开logstash-sample.conf,进行如下配置,修改es登陆密码

 命令行工具进入Logstash的bin目录下,执行语句

logstash.bat -f D:\tool\logstash-8.11.0\config\logstash-sample.conf

即可启动成功

C:\Users\hsc>d:
D:\>cd D:\tool\logstash-8.11.0\bin
D:\tool\logstash-8.11.0\bin>logstash.bat -f D:\tool\logstash-8.11.0\config\logstash-sample.conf

浏览器输入地址http://localhost:9600/ 显示如下信息启动成功

3.3 Logstash数据同步

本点将搭建:mysql数据同步到es中

后续更新中

4.安装Elasticsearch-head部署

elasticsearch-head 是用于监控 Elasticsearch 状态的客户端插件,包括数据可视化、执行增删改查操作等。 elasticsearch-head插件是使用JavaScript开发的,依赖Node.js库,使用Grunt工具构建,所以要安装elasticsearch-head,还需要先安装Node.js和Grunt。

node安装:下载地址https://nodejs.org/en/download/

 下载Windows版msi的,下载完成直接默认安装。

grunt安装:直接在命令行输入:npm install -g grunt-cli 即可安装

node和grunt版本:

4.1 Elasticsearch-head下载

CSDN下载地址:https://download.csdn.net/download/qq_28147821/88571702

4.2 Elasticsearch-head运行

下载压缩包后,直接解压,直接打开index.html即可运行查看es各项数据

  • 16
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot整合Elasticsearch可以使用Spring Data Elasticsearch,在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency> ``` 在application.properties配置文件中添加以下配置: ``` spring.data.elasticsearch.repositories.enabled=true spring.data.elasticsearch.cluster-name=my-application spring.data.elasticsearch.cluster-nodes=localhost:9300 ``` 其中,cluster-name为Elasticsearch集群名称,cluster-nodes为Elasticsearch集群节点地址。 接下来,定义一个实体类,并使用注解标注该实体类对应的索引和类型: ```java @Document(indexName = "article", type = "news") public class Article { @Id private Long id; @Field(analyzer = "ik_max_word", searchAnalyzer = "ik_max_word") private String title; @Field(analyzer = "ik_max_word", searchAnalyzer = "ik_max_word") private String content; // getter/setter } ``` 在定义完实体类后,可以使用ElasticsearchRepository接口定义数据访问层的方法: ```java public interface ArticleRepository extends ElasticsearchRepository<Article, Long> { List<Article> findByTitle(String title); } ``` 在服务层中调用ArticleRepository的方法即可进行数据的增删改查操作: ```java @Service public class ArticleService { @Autowired private ArticleRepository articleRepository; public void save(Article article) { articleRepository.save(article); } public void delete(Long id) { articleRepository.deleteById(id); } public Article getById(Long id) { Optional<Article> optional = articleRepository.findById(id); return optional.isPresent() ? optional.get() : null; } public List<Article> getByTitle(String title) { return articleRepository.findByTitle(title); } } ``` 以上就是Spring Boot整合Elasticsearch的基本流程。需要注意的是,在使用Spring Data Elasticsearch时,需要根据实际情况配置相应的注解和属性,以保证数据的正确存储和检索

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值