elasticseach、kibana安装部署
Elaticsearch、kibana、IK分词插件 安装部署
官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/7.11/elasticsearch-intro.html
1、docker自定义网络
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
f15f3323f810 backend bridge local
1dec420ee748 bridge bridge local
151b5bce03c2 eswork bridge local
21fbcd175d02 host host local
2c4fe12634cd layoutnet bridge local
daccfb2f7ebd none null local
这里使用 eswork 作为elasticsearch的网络。自定义可参考:https://www.cnblogs.com/dan-baishucaizi/p/13634903.html
2、es配置文件与数据
这里我们将所有的配置与数据文件放在/home/docker/elasticsearch
下!
$ sudo mkdir data
$ sudo mkdir config
$ sudo echo "http.host: 0.0.0.0" >> config/elasticsearch.yml
# 在elasticsearch 文件夹下操作
3、es启动容器
查看使用的镜像:
$ docker images | grep elasticsearch
elasticsearch 7.11.1 bc3d45eba361 3 weeks ago 819MB
启动:
$ chmod -R 777
$ docker run --name elasticsearch -p 10120:9200 -p 10121:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms4g -Xmx10g" -v /home/docker/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /home/docker/elasticsearch/data:/usr/share/elasticsearch/data -v /home/docker/elasticsearch/plugins:/usr/share/elasticsearch/plugins -d --net eswork --restart always elasticsearch:7.11.1
这里启动最后使用-d
后台启动,使用-it
会打印一串非常长的日志,人群是运行中的一个窗口,后台启动后,在本地浏览器访问我们映射的端口:
3.1 es浏览器测试访问
链接:http://你的ip:10120/ 对应容器内9200端口
返回如下数据:
{
"name" : "42011a753458",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "L6zd8XCCT--Cve6Tv0jysA",
"version" : {
"number" : "7.11.1",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "ff17057114c2199c9c1bbecc727003a907c0db7a",
"build_date" : "2021-02-15T13:44:09.394032Z",
"build_snapshot" : false,
"lucene_version" : "8.7.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
这里我们可以看见当前node的 uuid 以及一些版本信息。
4、Kibana安装
注意上面的es引擎我安装的是7.11.1,那么kibana也得选择对应的版本。
镜像下载:
$ docker pull kibana:7.11.1
容器启动:
参考:https://registry.hub.docker.com/_/kibana说明
# 此命令有问题,参考4.2节
$ docker run -d --name kibana --net eswork -p 10122:5601 --restart always -e ELASTICSEARCH_HOSTS=http://192.168.0.81:10120 kibana:7.11.1
容器启动后进行访问测试:
测试链接:http://192.168.0.81:10122/app/kibana
返回信息:
Kibana server is not ready yet
4.1 修改kibana容器的yml文件
# 进入容器
$ docker exec -it kibana bash
bash-4.4$ cd config/
bash-4.4$ vi kibana.yml
# 修改后
-------------------------------------------------
# Default Kibana configuration for docker target
server.name: kibana
server.port: 5601
server.host: 0.0.0.0
elasticsearch.hosts: [ "http://elasticsearch:9200" ]
i18n.locale: "Zh-CN"
monitoring.ui.container.elasticsearch.enabled: true
---------------------------------------------------
退出容器再次测试仍然遇到相同的问题:
$ docker restart kibana
发生这种问题应该是两个容器之间不能通讯,但是我用的自定义网络,不是应该可以访问elasticsearch吗?再次修改ip地址,这次直接使用容器的ip进行测试:
Kibana server is not ready yet
所有这个问题就越来越有意思了,这里还是不能正常访问!!!
考虑可能是映射除的端口问题,修改端口测试:端口更改后仍然不行!
A few years later……
4.2 重新创建kibana
$ docker run -d --name kibana --net eswork -p 10122:5601 --restart always -e ELASTICSEARCH_HOSTS=http://172.21.0.2:9200 kibana:7.11.1
最后发现这里的环境变量要配置容器内的ip+端口,不能使用宿主机!!
连接测试:

出现上面的画面说明安装成功!!
5、ik分词器安装
进入es容器,使用命令进行安装:
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.11.1/elasticsearch-analysis-ik-7.11.1.zip
这里的版本要与es版本对应!
Continue with installation? [y/N]y
-> Installed analysis-ik
看见安装成功的命令后,退出容器并重启容器
$ exit
$ docker restart elasticsearch
kibana使用测试
进入开发者控制台:(可以 替换"analyzer": "ik_smart"测试)
GET _analyze
{
"analyzer": "ik_max_word",
"text": ["和平统一"]
}
返回数据:
{
"tokens" : [
{
"token" : "和平统一",
"start_offset" : 0,
"end_offset" : 4,
"type" : "CN_WORD",
"position" : 0
},
{
"token" : "和平",
"start_offset" : 0,
"end_offset" : 2,
"type" : "CN_WORD",
"position" : 1
},
{
"token" : "统一",
"start_offset" : 2,
"end_offset" : 4,
"type" : "CN_WORD",
"position" : 2
},
{
"token" : "一",
"start_offset" : 3,
"end_offset" : 4,
"type" : "TYPE_CNUM",
"position" : 3
}
]
}
6、elasticsearch-head安装
# 创建elasticsearch-head容器
$ docker run -d --name elasticsearch-head -p 10123:9100 --restart always --net eswork mobz/elasticsearch-head:5
进入es容器修改配置,增加跨域许可:
$ docker exec -it elasticsearch bash
$ cd config/
$ vi elasticsearch.yml
# 在末尾添加
http.cors.enabled: true
http.cors.allow-origin: "*"
$ exit
exit
$ docker restart elasticsearch
连接测试:
参考链接: