使用docker安装elasticsearch kibana ik分词器以及踩雷

写在前面
docker是在win11子系统Linux下安装的(因为前段时间redis在Linux虚拟机里使用的,现在看着虚拟机就烦🙄)
由于是初学,并不是很了解其中的原理
各种问题的解决方式仅代表个人出错以及成功解决案例

docker安装省略,这里选择的是7.12.1版本(比较久远,可以去官网查找更新版本😎)

elasticsearch安装

创建网络

后续要与kibana连接
docker network create es-net

拉取镜像

docker pull elasticsearch:7.12.1

创建容器、部署单点

1
2
docker run -d --name es --network es-net -p 9200:9200 -p 9300:9300 -v /usr/local/es/data:/usr/share/elasticsearch/data -v /usr/local/es/plugins:/usr/share/elasticsearch/plugins -e "discovery.type=single-node" -e "ES_JAVA_OPTS=-Xms512m -Xmx512m"
elasticsearch:7.12.1

重启es容器

docker restart es

测试

访问http://localhost:9200
正常会显示 如图所示
alt text

  • 错误一:localhost拒绝访问
    看有些解决方法说是修改elasticsearch.yml文件,因为开启了ssl认证
    在终端执行curl localhost:9200也可以查看返回信息,有显示上图即成功
  • 错误二:localhost未发送任何数据
    es启动有点慢,需要等一等,可能是还没加载出来

kibana安装

拉取镜像

docker pull kibana:7.12.1
注意 版本要与elasticsearch一致

创建容器、部署kibana

1
2
docker run -d --name kibana --network es-net -p 5601:5601 -e ELASTICSEARCH_HOSTS=http://es:9200 
kibana:7.12.1

测试是否成功

访问http://localhost:5601
注意 kibana与es连接,一定在es启动成功后再启动kibana,否则报错

正常访问如图
alt text

  • 错误:kibana server is not ready yet
    查看日志
    docker logs -f kibana查看报错信息
    多半是与es没连接成功
    这里有个坑!
    需要将创建容器时es改为电脑的私有ip

    1
    2
    docker run -d --name kibana --network es-net -p 5601:5601 -e ELASTICSEARCH_HOSTS=http://私有ip:9200 
    kibana:7.12.1

    并将配置文件kibana.yml中elasticsearch.url链接也要改为私有ip

    可以采用数据卷挂载、copy到本地等方式修改/config/kibana.yml

查找ip

  • 方法一:cmd打开终端命令行
    输入ipconfig
    alt text
    es改为IPv4地址
  • 方法二:搜索
    控制面板->查看网络状态和任务
    alt text
    连接WIFI->详细信息->IPv4地址

ik分词器安装

在线安装

进入容器

docker exec -it es bash

下载

./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.1/elasticsearch-analysis-ik-7.12.1.zip

  • 错误:下载失败
    alt text
    Exception in thread "main" java.net.ConnectException: Connection refused
    没找到好的解决办法,遂手动下载安装

手动下载安装

注意版本一致

下载ik分词器

打开官网https://github.com/medcl/elasticsearch-analysis-ik查找与elasticsearch一致的版本下载zip文件,并解压到一个不含中文和空格的目录下

之后重命名为ik

ik转移到docker容器里

docker cp ik文件的路径 elasticsearch:/usr/share/elasticsearch/plugins

重启容器

docker restart es

注意! 尽量不采用此种方式(操控容器)

ik分词器安装参考解决方案以及尽量不采用此种方式操控容器的解释

测试

alt text

解决成功就可以愉快的在项目中使用elasticsearch结合数据库来进行搜索啦😉