安装Elasticsearch肯定是要在Springboot项目中使用的,纯讨论安装Elasticsearch那简直是避重就轻,很容易再后期使用中发现版本兼容性问题,通常项目中操作ES有三种办法:
1.通过URLConnection直接调用ES。
2.Jest/Rest Client操作ES。
3.SpringData ElasticSearch操作ES。
本期主要讲解安装,关于使用方式我们后期有时间再单独讨论,首先大家针对自己项目中操作ES的方式,选择安装合适的版本,并不一定要装最新版本ES。
一、如果你是第一种方式操作ES,你安装什么版本都行。
二、如果你是第二种方式Jest/Rest操作ES,先看项目Maven引入的Jest/Rest 版本,根据Jest/Rest 版本选择ES版本。
如果发现不合适又不想重装ES,可以替换Jest版本,具体Jest的版本查询,
如果你Jest版本是6.×版本,那你ES也要安装6.×版本,两者的大版本号要一致。
如果你是RestClient方式操作ES,请查看你引入rest-client的jar包版本号,亲测在springboot2.3.0版本开始默认为7.6.2的jar版本,如下。
稍早前的springboot版本所默认的Elasticsearch版本是6版本。
虽然,springboot版本、springboot默认引入的Elasticsearch的jar包版本、linux上安装的Elasticsearch版本均可自行更换,但总的来说,要确保三者兼容,以免后期出现问题。
三、如果你是第三种SpringData ElasticSearch操作ES方式,就要注意你springboot版本和maven引入的SpringData ElasticSearch版本。
比如,你项目springboot大版本是1.5版本,那你ES版本只能装2.4.0版本的,SpringData ElasticSearch需要引入2.1大版本才行,否则不兼容。
四,ES版本号确定了,下一步安装
由于我项springboot版本是2.2.7,所以我安装6.8.6版本ES。
1.下载es镜像,回车等待下载。
[root@localhost ~]# docker pull elasticsearch:6.8.6
2.查看镜像
[root@localhost ~]# docker images
确认没有问题,开始安装
3.启动镜像
[root@localhost ~]# docker run -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -d -p 9200:9200 -p 9300:9300 --name MyES001 c8b4938e5db2
由于我是本地虚拟机安装,为了节省内存限制了es内存大小: -e ES_JAVA_OPTS="-Xms512m -Xmx512m",如果是在服务器上,可以不考虑这个因素,直接docker run -d -p 9200:9200 -p 9300:9300 --name MyES001 c8b4938e5db2
MyES001 是我自定义的ES名称,c8b4938e5db2是镜像IMAGE ID
4.查看运行状态
[root@localhost ~]# docker ps -a
其中如图显示已启动状态,4分钟前启动。
5.测试,在浏览器输入:http://服务器ip地址:9200,显示es版本等信息,证明es安装且启动正常。
常见问题:
如果你和我一样是虚拟机安装,很容易遇到ES启动失败,查看docker容器日志报错:bootstrap checks failed。
原因:该vm.max_map_count内核设置需要至少设置为262144用于生产。根据自己的平台自行调整数值大小,官网目前给定最小262144:
解决办法:
切换到root用户修改配置sysctl.conf:vi /etc/sysctl.conf
添加配置:vm.max_map_count=262144
执行命令查看是否配置成功:sysctl -p
重启生效
如果还有问题,继续查看docker容器日志,根据报错信息排查解决。
对了,进入docker容器日志的命令是:
[root@localhost ~]# docker logs container-name/container-id(容器名字/id)