一、介绍
在2018年10月5日,一个做数据搜索服务的软件初创公司 Elastic,在纳斯达克上市。
而我们所熟悉的 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 安装包速度像蜗牛……,非常非常慢~~,可能是国内的网络原因吧!
登录https://www.elastic.co/cn/downloads/elasticsearch
,选择相应的系统环境下载软件包,小编我采用的是CentOS
,所以选择Linux
环境。
2.1、安装JDK(已经安装过,可以跳过)
Elasticsearch 是用 Java 语言开发的,所以在安装之前,需要先安装一下JDK
yum -y install java-1.8.0-openjdk
查看java安装情况
java -version
2.2、安装ElasticSearch
进入到对应上传的文件夹,安装ElasticSearch
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-data path.data: /data/es-data #设置logs日志的路径为/log/es-log path.logs: /log/es-log #设置内存不使用交换分区,配置了bootstrap.memory_lock为true时反而会引发9200不会被监听,原因不明 bootstrap.memory_lock: false #设置允许所有ip可以连接该elasticsearch network.host: 0.0.0.0 #开启监听的端口为9200 http.port: 9200 #增加新的参数,为了让elasticsearch-head插件可以访问es (5.x版本,如果没有可以自己手动加) http.cors.enabled: true http.cors.allow-origin: "*"
2.6、启动elasticsearch
启动
systemctl start elasticsearch
查看状态
systemctl status elasticsearch
设置开机启动
systemctl enable elasticsearch
启动成功之后,测试服务是否开启
curl -X GET http://localhost:9200
返回如下信息,说明安装、启动成功了
同时也可以远程测试一下,如果网络被拒绝,检查防火墙是否开启
#查询防火墙状态 firewall-cmd --state
如果状态是active
表示已经开启,可以将其关闭
#关闭防火墙 systemctl stop firewalld.service
如果不想开机启动,可以输入如下命令
#禁止firewall开机启动 systemctl disable firewalld.service
我们再来测试一下远程是否可以正常访问,结果如下:
已经可以正常访问了。