安装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的版本查询,

查看本机es版本 查看es的版本_elasticsearch

 

如果你Jest版本是6.×版本,那你ES也要安装6.×版本,两者的大版本号要一致。

如果你是RestClient方式操作ES,请查看你引入rest-client的jar包版本号,亲测在springboot2.3.0版本开始默认为7.6.2的jar版本,如下。

查看本机es版本 查看es的版本_elasticsearch_02

稍早前的springboot版本所默认的Elasticsearch版本是6版本。

虽然,springboot版本、springboot默认引入的Elasticsearch的jar包版本、linux上安装的Elasticsearch版本均可自行更换,但总的来说,要确保三者兼容,以免后期出现问题。

三、如果你是第三种SpringData ElasticSearch操作ES方式,就要注意你springboot版本和maven引入的SpringData ElasticSearch版本。


查看本机es版本 查看es的版本_docker_03

比如,你项目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

查看本机es版本 查看es的版本_linux_04

2.查看镜像

[root@localhost ~]# docker images

查看本机es版本 查看es的版本_linux_05

确认没有问题,开始安装

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

查看本机es版本 查看es的版本_elasticsearch_06

4.查看运行状态

[root@localhost ~]# docker ps -a

查看本机es版本 查看es的版本_java_07

其中如图显示已启动状态,4分钟前启动。

查看本机es版本 查看es的版本_linux_08

5.测试,在浏览器输入:http://服务器ip地址:9200,显示es版本等信息,证明es安装且启动正常。

查看本机es版本 查看es的版本_elasticsearch_09


常见问题:

如果你和我一样是虚拟机安装,很容易遇到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)