二. 创建elasticsearch的挂载目录夹用于存放docker容器内的数据和配置(非必要步骤)
二. 运行,创建容器
# 创建elasticsearch的挂载目录夹用于存放docker容器内的数据和配置(非必要步骤)
mkdir -p /data/elasticsearch/{logs,data,plugins}
#注意:9300是tcp通讯端口,集群间和TCPClient都执行该端口,9200是http协议的RESTful接口
docker run -it --name esd -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" \
-v /data/elasticsearch/logs:/usr/share/elasticsearch/logs \
-v /data/elasticsearch/data:/usr/share/elasticsearch/data \
-v /data/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
docker.elastic.co/elasticsearch/elasticsearch:7.2.0
# \ 表示连接符
docker run --name esd -d -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" \
docker.elastic.co/elasticsearch/elasticsearch:7.2.0
vi /usr/share/elasticsearch/config/elasticsearch.yml
docker restart 容器ID或容器名 :不管容器是否启动,直接重启容器
1. 首先 docker ps 查看正在运行的容器信息,显示2分钟前启动运行
2. docker restart 59ec 重启容器
3. 再次 docker ps 查看容器信息 显示4秒前启动运行
安装IK中文分词插件:
$ cd /usr/share/elasticsearch
$ ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.2.0/elasticsearch-analysis-ik-7.2.0.zip
如果发生java.net.UnknownHostException异常,这是Docker容器内部无法解析域名,参考如下链接解决:
https://blog.csdn.net/u012834750/article/details/79965569
三. 通过浏览器访问ElasticSearch服务器,看到如下返回的json信息,代表服务启动成功
四. 安装elasticsearch-head
该插件可以完成图形化界面的效果,方便索引数据的查看和监控。
docker pull docker.io/mobz/elasticsearch-head:5
docker run -itd --name eshead -p 9100:9100 mobz/elasticsearch-head:5
进入容器内修改elasticsearch-head 检测的elasticsearch 本地ip地址为外网ip:
在_site 目录下修改app.js文件 这时我们无法修改 因为容器内vim编辑器未安装,所以先安装vim。
#安装命令
apt-get install -y vim
# 如果提示如下信息:
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package vim
则先执行以下命令:
apt-get update
# 如果提示 apt-get command not found,则执行如下命令:
yum install -y vim*
$ vim app.js
搜索 9200端口 使用 :/9200 回车
将http://localhost:9200 替换为公网ip 比如: http://192.168.133.128:9200/
this._super();
this.prefs = services.Preferences.instance();
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://192.168.133.128:9200/";
if( this.base_uri.charAt( this.base_uri.length - 1 ) !== "/" ) {
// XHR request fails if the URL is not ending with a "/"
this.base_uri += "/";
}
五. 分布式安装—docker简易搭建ElasticSearch集群
上面相当于单实例安装,如果想要单台机器模拟集群,可以按照上面步骤再多起几个实例。
下面以单台机器模拟 一主两从的集群。
主节点配置:
接着再启动两个从节点:
docker run -d --name slave1 -p 9201:9200 -p 9301:9300 docker.elastic.co/elasticsearch/elasticsearch:7.2.0
docker run -d --name slave2 -p 9202:9200 -p 9302:9300 docker.elastic.co/elasticsearch/elasticsearch:7.2.0
如果遇到容器启动后没多久自动退出,则以如下命令运行:
docker run -d --name slave1 -p 9201:9200 -p 9301:9300 docker.elastic.co/elasticsearch/elasticsearch:7.2.0 /bin/sh -c "while true; do echo hello world; sleep 1; done"
docker run -d --name slave2 -p 9202:9200 -p 9302:9300 docker.elastic.co/elasticsearch/elasticsearch:7.2.0 /bin/sh -c "while true; do echo hello world; sleep 1; done"
从节点1配置:
# vim config/elasticsearch.yml
cluster.name: "docker-cluster"
node.name: slave1 # 从节点2为 slave2
network.host: 0.0.0.0
http.cors.enabled: true
http.cors.allow-origin: "*"
discovery.zen.ping.unicast.hosts: ["127.0.0.1","172.17.0.1","172.17.0.5","172.17.0.6"]
ctrl+p+q : 回到宿主机
配置好后,重启所有的es实例容器。
补充:如何查看docker容器的ip?
因为docker容器是彼此隔离的,所以容器内的ip是不一样的。
容器启动后 docker exec -it esd bash进入容器 esd为这个容器的name
官网参考地址:
https://www.elastic.co/guide/en/elasticsearch/reference/7.2/docker.html
https://www.jianshu.com/p/bd9e56ef5beb
https://www.jianshu.com/p/991c74a1bbf7
https://segmentfault.com/a/1190000015568518?utm_source=tag-newest
https://blog.51cto.com/zero01/2285604
https://blog.csdn.net/belonghuang157405/article/details/83301937