一、简介
二、安装Elasticsearch
1、拉取镜像:
docker pull elasticsearch:7.4.2
2、在 /mydata/ 目录下创建elasticsearch/config和elasticsearch/data目录
root@jiguiquan:/# mkdir -p /mydata/elasticsearch/config root@jiguiquan:/# mkdir -p /mydata/elasticsearch/data
3、在 /mydata/elasticsearch/config 下创建配置文件:
root@jiguiquan:/mydata/elasticsearch/config# cat elasticsearch.yml http.host:0.0.0.0
4、使用以下命令启动容器
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \ -e "discovery.type=single-node" \ -e ES_JAVA_OPTS="-Xms64m -Xmx128m" \ -v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ -v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \ -v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \ -d elasticsearch:7.4.2
5、此时使用docker ps 查看容器,我们会发现根本没有es 的容器,我们可以查看对应的es容器的日志:
root@jiguiquan:/mydata/elasticsearch/data# docker ps -a root@jiguiquan:/mydata/elasticsearch/data# docker logs 98b494db00c9
会发现启动不了的原因是因为 es 容器没有权限往 /mydata/elasticsearch/ 目录下写数据:
因此,我们需要将 /mydata/elasticsearch/ 目录下的所有文件递归设置权限为 wxr
chmod -R 777 /mydata/elasticsearch/
6、之后再次启动 es 容器:docker start 98b494db00c9
这次 es 容器就可以顺利启动了!
root@jiguiquan:/# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 98b494db00c9 elasticsearch:7.4.2 "/usr/local/bin/dock…" 2 hours ago Up 5 minutes 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp elasticsearch 62415e1c830b redis "docker-entrypoint.s…" 2 days ago Up 2 days 0.0.0.0:6379->6379/tcp redis ee8489cd9392 mysql:5.7.26 "docker-entrypoint.s…" 2 days ago Up 2 days 0.0.0.0:3306->3306/tcp, 33060/tcp mysql
7、启动成功后,我们使用http访问虚拟机的9200端口:
显然,Elasticsearch已经安装成功!
三、安装Kibana
1、拉取Kibana镜像
docker pull kibana:7.4.2
2、使用以下命令启动容器:
docker run --name kibana \ -e ELASTICSEARCH_HOSTS=http://192.168.174.141:9200 \ -p 5601:5601 \ -d kibana:7.4.2
3、访问虚拟机5601端口 http://192.168.174.141:5601/
Kibana顺利安装并启用!
最后设置我们的Elasticsearch和Kibana为与Docker一起启动:
docker update elasticsearch --restart=always docker update kibana --restart=always
四、为ElasticSearch安装ik分词器:
ik分词器的下载地址为:
https://github.com/medcl/elasticsearch-analysis-ik/releases
必须严格保证ik分词器的版本和我们安装的ElasticSearch版本一致(7.4.2)
1、进入es的docker容器内部:
root@jiguiquan:/mydata/elasticsearch/plugins# docker exec -it elasticsearch /bin/bash [root@98b494db00c9 elasticsearch]# ls LICENSE.txt NOTICE.txt README.textile bin config data jdk lib logs modules plugins
但是我们其实在安装ES的时候就已经将 data、config、plugins三个目录映射到了宿主机上了,所以只需要到宿主机操作即可;
2、使用wget在宿主机的plugins目录下下载ik分词器:
root@jiguiquan:/mydata/elasticsearch/plugins# wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.4.2/elasticsearch-analysis-ik-7.4.2.zip
3、使用unzip解压一下此zip压缩文件,解压到plugins/ik/目录下:
root@jiguiquan:/mydata/elasticsearch/plugins# chmod 777 ik/ root@jiguiquan:/mydata/elasticsearch/plugins# ll total 4412 drwxrwxrwx 3 root root 4096 Jul 4 15:07 ./ drwxrwxrwx 5 root root 4096 Jul 4 15:07 ../ drwxrwxrwx 3 root root 4096 Jul 4 15:07 ik/
进入容器内部,使用elasticsearch-plugin list查看已经安装的插件列表:
[root@98b494db00c9 bin]# ls ../plugins/ ik ----注意这里要将之前下载的elasticsearch-analysis-ik-7.4.2.zip删除掉 [root@98b494db00c9 bin]# elasticsearch-plugin list ik ----代表ik分词器插件就已经安装好了
4、重启elasticsearch容器
docker restart elasticsearch
这样ES中常用的ik分词器就安装好了!
五、重新安装ElasticSearch
有时候由于创建容器的时候配置不合理,比如JVM的堆内存设置太少,导致使用过程中经常出一些莫名其妙的问题,所以我们最快的方式就是将之前的容器删除后重新安装;
问:那么之前的ES的数据、配置、插件丢失怎么办?
答:不会的!因为我们之前已经将es容器中的data、config、plugins目录已经挂载到了宿主机上面,相当于持久化了;
当我们创建新的es容器的时候,挂载到原来的文件上,所有的信息就都恢复了!
1、删除之前的ES容器
root@jiguiquan:/mydata/elasticsearch/plugins/ik/config# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f3ea8adb602e kibana:7.4.2 "/usr/local/bin/dumb…" 3 weeks ago Up 26 minutes 0.0.0.0:5601->5601/tcp kibana 98b494db00c9 elasticsearch:7.4.2 "/usr/local/bin/dock…" 3 weeks ago Exited (143) About a minute ago elasticsearch 62415e1c830b redis "docker-entrypoint.s…" 4 weeks ago Up 6 days 0.0.0.0:6379->6379/tcp redis ee8489cd9392 mysql:5.7.26 "docker-entrypoint.s…" 4 weeks ago Up 6 days 0.0.0.0:3306->3306/tcp, 33060/tcp mysql root@jiguiquan:/mydata/elasticsearch/plugins/ik/config# docker rm elasticsearch elasticsearch root@jiguiquan:/mydata/elasticsearch/plugins/ik/config# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f3ea8adb602e kibana:7.4.2 "/usr/local/bin/dumb…" 3 weeks ago Up 27 minutes 0.0.0.0:5601->5601/tcp kibana 62415e1c830b redis "docker-entrypoint.s…" 4 weeks ago Up 6 days 0.0.0.0:6379->6379/tcp redis ee8489cd9392 mysql:5.7.26 "docker-entrypoint.s…" 4 weeks ago Up 6 days 0.0.0.0:3306->3306/tcp, 33060/tcp mysql
2、调整上次的ES镜像的启动命令,将堆内存调大:
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \ -e "discovery.type=single-node" \ -e ES_JAVA_OPTS="-Xms128m -Xmx512m" \ -v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ -v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \ -v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \ -d elasticsearch:7.4.2