linux cpu占用率如何看
230
2022-09-13
springboot+elasticSearch实现数据高效搜索
ElasticSearch,正是 Elastic 公司最出名的产品之一,其中还包括有分布式日志解决方案 ELK(Elastic Search、Logstash、Kibana)、Beats、ECE等。
那 ElasticSearch 究竟有什么作用呢?
本质其实是一个基于 Lucene 开发的搜索服务器,它提供了一个基于 RESTful web 接口的分布式多用户能力的全文搜索引擎,能够达到实时搜索、稳定、可靠、快速、安装使用方便等特点。
同时,作为 Apache 许可条款下的开放源码,目前已经成为一种流行的企业级搜索引擎。
既然在企业开发中如此流行,肯定少不了 Springboot 的参与,今天我们就一起来探讨一下 SpringBoot 与 ElasticSearch 的整合,看看它是否真的如所介绍的那样优秀!
本文主要介绍分为以下几个部分:
第一部分:环境准备,安装ElasticSearch,安装 ElasticSearch-head 插件可视化web界面第二部分:SpringBoot 整合 ElasticSearch 开发第三部分:CRUD 测试
一、ElasticSearch 安装
本人是在CentOS7来部署 ElasticSearch 服务。
建议把所需的安装包,手动从网上下载下来,因为服务器下载 ElasticSearch 安装包速度非常非常慢~~~~~
登录Download Elasticsearch Free | Get Started Now | Elastic | Elastic,选择相应的系统环境下载软件包,我采用的是CentOS,所以选择Linux环境。
2.1、安装JDK(已经安装过,可以跳过)
Elasticsearch 是用 Java 语言开发的,所以在安装之前,需要先安装一下JDK,环境配置起来即可。
yum -y install java-1.8.0-openjdk
查看java安装情况
java -version
2.2、安装ElasticSearch
可以用FileZilla Client把下载好的es安装包上传到服务器,输入安装命令
rpm -ivh elasticsearch-6.1.0.rpm
查找安装路径
rpm -ql elasticsearch
一般是装在/usr/share/elasticsearch/下。
2.3、设置data的目录
创建/data/es-data目录,用于elasticsearch数据的存放
mkdir -p /data/es-data
修改该目录的拥有者为elasticsearch
chown -R elasticsearch:elasticsearch /data/es-data
2.4、设置log的目录
mkdir -p /log/es-log
修改该目录的拥有者为elasticsearch
chown -R elasticsearch:elasticsearch /log/es-log
2.5、修改配置文件elasticsearch.yml
vim /etc/elasticsearch/elasticsearch.yml
修改如下内容:
#设置节点名称cluster.name: my-es#设置data存放的路径为/data/es-datapath.data: /data/es-data#设置logs日志的路径为/log/es-logpath.logs: /log/es-log#设置内存不使用交换分区,配置了bootstrap.memory_lock为true时反而会引发9200不会被监听,原因不明bootstrap.memory_lock: false#设置允许所有ip可以连接该elasticsearchnetwork.host: 0.0.0.0#开启监听的端口为92009200#增加新的参数,为了让elasticsearch-head插件可以访问es (5.x版本,如果没有可以自己手动加)true"*"
2.6、启动elasticsearch
启动
systemctl start elasticsearch
查看状态
systemctl status elasticsearch
设置开机启动
systemctl enable elasticsearch
启动成功之后,测试服务是否开启
curl -X GET --state
如果状态是active表示已经开启,可以将其关闭
#关闭防火墙systemctl stop firewalld.service
如果不想开机启动,可以输入如下命令
#禁止firewall开机启动systemctl disable firewalld.service
我们再来测试一下远程是否可以正常访问,结果如下:
已经可以正常访问了。
三、ElasticSearch-head 安装
上面我们介绍了 ElasticSearch 的安装,但是只能通过接口去查询数据,能不能通过可视化界面来查询数据呢?
ElasticSearch-head,就是一个提供可视化界面的 ElasticSearch 插件,使用 Html5 开发,本质上还是一个 nodejs 的工程,因此在使用之前需要先安装 nodeJs。
3.1、安装 nodeJs
下载nodeJS
wget -zxvf node-v10.9.0-linux-x64.tar.gz
移动解压之后的文件夹到/usr/local
mv node-v10.9.0-linux-x64 /usr/local/nodejs
创建软链接,让npm和node命令全局生效
ln -s /usr/local/nodejs/bin/node /usr/bin/nodeln -s /usr/local/nodejs/bin/npm /usr/bin/npm
查看nodejs是否安装成功
node -vnpm -v
3.2、 安装 elasticsearch-head
如果未安装git ,则先安装git工具
yum install –y git
查看git安装情况
yum install –y git
从 gitHub 上拉取 elasticsearch-head 插件代码
git clone elasticsearch-head
因为npm安装非常非常慢,所以在这里先安装淘宝源地址,命令如下:
npm install cnpm -g --registry=-s /usr/local/nodejs/bin/cnpm /usr/local/bin/cnpm
使用cnpm命令下载安装项目所需要的插件
cnpm install
大概2分钟之后就安装好了,安装完成之后,修改配置信息
vim _site/app.js
将localhost换成elasticsearch的服务器地址,本人部署的这台是197.xxx.xx.xxx
换完之后,在elasticsearch-head目录下,输入如下命令,进入启动目录
cd node_modules/grunt/bin
使用如下命令启动服务,使elasticsearch-head服务在后台运行!
nohup ./grunt server &
最后,直接远程通过浏览器访问elasticsearch-head可视化管理界面,默认访问地址是ip:9200,访问结果如下!
至此,elasticsearch的安装包括可视化界面插件elasticsearch-head已经完成了!
四、SpringBoot 整合 ElasticSearch
对于 SpringBoot 来说,ElasticSearch 其实只是一个中间件,用途在于提供高效的搜索服务,比较幸运的是 SpringBoot 也为我们提供了 ElasticSearch 依赖库,添加依赖包,通过 JPA 访问非常方便,整合过程如下!
4.1、创建一个SpringBoot项目
在pom.xml中,添加依赖库 ElasticSearch 依赖包
在application.properties中添加配置,其中节点名称cluster-name需要与上面的配置保持一致!
spring.data.elasticsearch.cluster-name=my-esspring.data.elasticsearch.cluster-nodes=197.XX.XX.207:9200
4.1、编写 CURD
我们先写一个的实体类Student,借助这个实体类来完成基础的 CRUD 功能。
新增实体类Student,其中indexName表示索引,type表示索引类别
@Data@Accessors(chain = true)@Document(indexName = "student", type = "school")public class Student { private static final long serialVersionUID = 1l; @Id private String id; private String name; private String gender; private Integer age;}
注意id字段是必须的,可以不写注解@Id!
使用 JPA 作为数据持久层,接口继承自ElasticsearchRepository,同时新增两个自定义查询方法
public interface StudentRepository extends ElasticsearchRepository
创建控制层,编写基础的 CRUD 功能
@RestController@RequestMapping("/student")public class StudentController { @Autowired private StudentRepository studentRepository; @Autowired private ElasticsearchTemplate elasticsearchTemplate; /** * 批量添加 * @param students * @return */ @PostMapping("/batchAdd") public void add(@RequestBody List
4.2、CRUD 测试
CRUD 编写完了,我们验证一下是否可以正常操作,启动 springboot 项目,使用 postman 进行测试。
批量新增、新增功能测试
执行之后,登录可视化界面查询界面,选择索引student,可以很清晰的看到数据已经进去了
修改功能测试,修改时需要传入ID
删除功能测试,只需要传入ID
查询功能测试,查询所有数据
查询功能测试,查询指定ID信息
正在上传…重新上传取消
查询功能测试,普通模糊查询,ElasticSearch 会对关键词进行拆分,只要有包含关键字的都会查询出来,例如输入王张,会将包含王或者张的姓名信息查询出来查询功能测试,高级查询,这个是使用官方api提供的查询入口,可以在方法中进行自定义搜索
五、总结
elasticsearch 在海量数据查询方面,非常高效,本来想写在大量数据查询方面,数据库与 elasticsearch 的查询效率比对,由于篇幅较长会造成阅读体验降低,后面文章中再次介绍这个部分。
对于想学习 elasticsearch 的新手,尤其是安装部分可能比较困难,因此花的编写时间比较多,后续的整合都比较简单,elasticsearch 真正的强大的地方在于高效信息搜索,本篇对 elasticsearch 的搜索只是做一个基础的介绍,具体的高级搜索方法大家可以参考官方文档 API,本篇可以看作为 elasticsearch 搜索服务入门的教程!
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~