elasticseach、kibana安装部署

Elaticsearch、kibana、IK分词插件 安装部署


作者:elfin   资料来源:参考文献


官方文档: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


Top  ---  Bottom

2、es配置文件与数据

这里我们将所有的配置与数据文件放在/home/docker/elasticsearch下!

$ sudo mkdir data
$ sudo mkdir config
$ sudo echo "http.host: 0.0.0.0" >> config/elasticsearch.yml
# 在elasticsearch 文件夹下操作

Top  ---  Bottom

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 以及一些版本信息。


Top  ---  Bottom

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

所有这个问题就越来越有意思了,这里还是不能正常访问!!!

考虑可能是映射除的端口问题,修改端口测试:端口更改后仍然不行!


Top  ---  Bottom

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+端口,不能使用宿主机!!

连接测试:

出现上面的画面说明安装成功!!


Top  ---  Bottom

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

连接测试:

地址:http://192.168.0.81:10123/

参考链接:

posted @ 2021-03-11 16:01  巴蜀秀才  阅读(182)  评论(0编辑  收藏  举报