前言
上一个项目刚刚结束,准备摸几天鱼学点新东西。但是在这空隙间,就被领导抓住了,让我从硬盘上拷一个项目,说是这个项目上有新的需求要改动,让我把环境搭一下,然后跑起来。万般无奈之下,我只能答应了。但是我也很疑惑,为毛还要从硬盘上拷项目?虽然公司没用Git,但是SVN也是家常便饭了,从同事处得知,原来管SVN权限的人现在休年假去了。最最重要的是,这个项目还不是我参与的,这就意味着,我又要在别人的代码上进行开发,心里拔凉拔凉的啊!
项目拷贝完之后,导入IDEA中,先看看配置文件。发现项目中用到了ElasticSearch,想想以前学习SpringBoot时用过,当时ElasticSearch是安装在阿里云ECS服务器上的,但是那个服务器早就过期了,现在又重新买了一个。又不想直接下载安装包解压安装,所以选择使用Docker来安装部署,期间也遇到很多问题,在这里分享一下安装心得。
操作环境
阿里云ECS服务器 CentOS 7.3 64位
Docker部署ElasticSearch
关于Docker的安装和使用,这里我就不再提了,本文只讲如何安装部署ElasticSearch。如需了解Docker的基本操作,可以访问博主的另一篇博文:
搜索ElasticSearch镜像
docker search elasticsearch
使用上面的命令即可搜索所有的Docker镜像
拉取镜像
docker pull docker.io/elasticsearch:版本号
拉取镜像的时候,可以指定版本,如果不指定,默认使用latest。
查看镜像
docker images
运行容器
docker run -d --name es2 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" 5acf0e8da90b
通过镜像启动容器,然后查看容器。
docker ps # 列出正在运行的容器
docker ps -a # 列出所有容器,包括未运行的
明明启动了容器,为什么会自动退出了呢?这里通过查看日志来看看是什么原因。
docker logs 676164fb24b3 # 查看某个容器的日志
经过相关资料证实,这是因为内存不足导致的。所以在启动的时候,调整内存的分配,重新启动。
“ES_JAVA_OPTS=-Xms512m -Xmx512m”
通过上图可知,容器已经启动完成。现在就可以在浏览器输入 ip + 端口号 访问了。
配置跨域
通过项目中的配置,发现 cluster.name 这个与刚刚启动的不一致,ElasticSearch默认的cluster.name为elasticsearch,所以,这里需要进行修改。
首先进入容器。
docker exec -it es2 /bin/bash
我们需要对红框框圈中的文件"elasticsearch.yml"进行修改。
这里使用vim和vi命令,都提示"没有发现这个命令",这是因为Docker容器内部没有安装。所以,这里需要进行安装。
apt-get update # 获取最新的软件包
apt-get install vim # 下载
依次使用上面的命令即可安装成功,然后对"elasticsearch.yml"这个文件修改,增加如下内容。
cluster.name: "qfcwx-cluster"
network.host: 0.0.0.0
http.cors.enabled: true
http.cors.allow-origin: "*"
cluster.name:自定义集群名称。
network.host:当前es节点绑定的ip地址,默认127.0.0.1,如果需要开放对外访问这个属性必须设置。
http.cors.enabled:是否支持跨域,默认为false。
http.cors.allow-origin:当设置允许跨域,默认为*,表示支持所有域名,如果我们只是允许某些网站能访问,那么可以使用正则表达式。
重启ElasticSearch容器
使用exit
命令从容器内部退出。
注意,这里是重启ElasticSearch容器,并不是重新启动一个新的容器。
docker restart es2
使用浏览器进行访问。
可以看到集群的名称已经变成我们自己设置的了。
查看ElasticSearch内部信息
如果没有指定版本号,就从Docker镜像仓库中拉取镜像的话,你是不知道版本号的。如果在Java中操作ElasticSearch,需要导入相应的约束或者jar包。这就需要和ElasticSearch版本号对应,不然就会报莫名的异常,所以,就需要查看当前ElasticSearch的本版号了,这里有两种方法。
①、通过 ip+端口号 可以看到返回的json数据中,version下面的number就是版本号。
②、通过查看ElasticSearch容器内部信息。
docker inspect 5acf0e8da90b # 查看容器内部信息
ElasticSearch Head管理界面
可以通过Docker拉取一个ElasticSearch Head镜像,但是感觉很麻烦,所以这里可以使用谷歌浏览器插件:ElasticSearch Head
通过谷歌应用商店即可安装。安装完成后,就能查看当前集群的信息。
讲到这里,关于Docker如何安装ElasticSearch就讲完了,至于ElasticSearch怎么操作,可以参考官方文档或下面的文章:
不知道各位读者有没有在繁忙之中抽空去看《哪吒之魔童降世》这部电影啊!博主上周和自己的好基友去看了这部电影,发现真的是良心巨作。至于剧情和点评这里就不说了,强烈推荐。
参考文献:
https://www.cnblogs.com/jianxuanbing/p/9410800.html
https://www.cnblogs.com/river2005/p/8503238.html