项目需要搭建es环境,踩了一些坑,记录下
首选还是通过docker搭建,而通过docker最佳的部署方式就是docker compose
1.docker-compose.yml
version: "3.1"
# 服务配置
services:
elasticsearch:
container_name: es01
image: elasticsearch:8.12.2
restart: unless-stopped
environment:
- "ES_JAVA_OPTS=-Xms1024m -Xmx1024m"
- "TZ=Asia/Shanghai"
- "discovery.type=single-node"
- "ELASTIC_PASSWORD=123456"
ports:
- "9200:9200"
- "9300:9300"
volumes:
# - ./config:/usr/share/elasticsearch/config
- ./data:/usr/share/elasticsearch/data
- ./plugins:/usr/share/elasticsearch/plugins
networks:
- elastic_net
kibana:
container_name: kibana01
image: kibana:8.12.2
restart: unless-stopped
environment:
- "TZ=Asia/Shanghai"
- "I18N_LOCALE=zh-CN"
- "ELASTICSEARCH_HOSTS=http://elasticsearch:9200"
- "ELASTICSEARCH_USERNAME=test"
- "ELASTICSEARCH_PASSWORD=123456"
ports:
- "5601:5601"
#volumes:
#- ./kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml
networks:
- elastic_net
depends_on:
- elasticsearch
# 网络配置
networks:
elastic_net:
driver: bridge
经过权衡,我觉得es和kibana的配置文件都没必要映射出来,常用的参数在docker-compose.yml配置文件里指定即可,其他用默认的配置文件完全够用
这样做的好处就是不用操心配置文件的问题,以后升级容器也可以无脑升级
由于es和kibana特地配置在了一个网络elastic_net,所以es的连接地址用了服务名 http://elasticsearch:9200,这样部署脚本就比较通用,不用区分服务器ip
文件层级如下,这里把kibana也作为了es01的子文件,不过后面不需要kibana文件夹了,因为不用映射文件出来了
![图片[1]-docker-compose 安装部署ElasticSearch 和 Kibana](https://cos.soyisou.cn/wp-content/uploads/2025/04/20250427035750590-image.png?watermark/2/text/6ZOt6L2p57K-6YCJCkFjSmF2YQp3d3cuYWNqYXZhLmNvbQ/font/dGFob21hLnR0Zg/fontsize/24/fill/IzAwMDAwMA/dissolve/73/shadow/0/gravity/southeast/dx/20/dy/20)
2.启动容器,查看服务状态
启动容器
docker compose up -d && docker compose logs -f
查看日志发现报错
kibana01 | Root causes:
kibana01 | security_exception: unable to authenticate user [jsti] for REST request [/_nodes?filter_path=nodes.*.version%2Cnodes.*.http.publish_address%2Cnodes.*.ip]
![图片[2]-docker-compose 安装部署ElasticSearch 和 Kibana](https://cos.soyisou.cn/wp-content/uploads/2025/04/20250427035828426-image-1024x96.png?watermark/2/text/6ZOt6L2p57K-6YCJCkFjSmF2YQp3d3cuYWNqYXZhLmNvbQ/font/dGFob21hLnR0Zg/fontsize/24/fill/IzAwMDAwMA/dissolve/73/shadow/0/gravity/southeast/dx/20/dy/20)
这种问题是正常现象,因为新配置的账号在es里面没有导致的,新加账号即可
原来使用的是elastic默认账号,但是启动kibana报错了,新版本不给使用默认账号,所以docker-compose文件里使用了新账号
[FATAL][root] Error: [config validation of [elasticsearch].username]: value of “elastic” is forbidden. This is a superuser account that cannot write to system indices that Kibana needs to function. Use a service account token instead.
参考文档:https://blog.csdn.net/qq_52594679/article/details/136257664
访问es地址,输入elastic默认账号密码后,显示正常
![图片[3]-docker-compose 安装部署ElasticSearch 和 Kibana](https://cos.soyisou.cn/wp-content/uploads/2025/04/20250427035912934-image.png?watermark/2/text/6ZOt6L2p57K-6YCJCkFjSmF2YQp3d3cuYWNqYXZhLmNvbQ/font/dGFob21hLnR0Zg/fontsize/24/fill/IzAwMDAwMA/dissolve/73/shadow/0/gravity/southeast/dx/20/dy/20)
访问kibana地址,显示kibana未准备
3.进入es容器,新增kibana账号
进入es容器
docker exec -it es01 /bin/bash
新增账号,并赋权
#创建新账户elasticsearch-users useradd username
#给账户授权elasticsearch-users roles -a superuser usernameelasticsearch-users roles -a kibana_system username
此时用该账号登陆kibana页面,一切正常
![图片[4]-docker-compose 安装部署ElasticSearch 和 Kibana](https://cos.soyisou.cn/wp-content/uploads/2025/04/20250427040014899-image-1024x668.png?watermark/2/text/6ZOt6L2p57K-6YCJCkFjSmF2YQp3d3cuYWNqYXZhLmNvbQ/font/dGFob21hLnR0Zg/fontsize/24/fill/IzAwMDAwMA/dissolve/73/shadow/0/gravity/southeast/dx/20/dy/20)
4.使用免密登录(快速使用)
如果使用如上方法依旧出现:kibana报错 Kibana server is not ready yet ,那么可以使用如下方法:
version: "3.8"
# 服务配置
services:
elasticsearch:
container_name: elasticsearch
image: elasticsearch:8.12.2
restart: unless-stopped
environment:
- "ES_JAVA_OPTS=-Xms1024m -Xmx1024m"
- "TZ=Asia/Shanghai"
- "discovery.type=single-node"
- "xpack.security.enabled=false"
ports:
- "9200:9200"
- "9300:9300"
volumes:
# - ./config:/usr/share/elasticsearch/config
- ./data:/usr/share/elasticsearch/data
- ./plugins:/usr/share/elasticsearch/plugins
networks:
- elastic_net
kibana:
container_name: kibana
image: kibana:8.12.2
restart: unless-stopped
environment:
- "TZ=Asia/Shanghai"
- "I18N_LOCALE=zh-CN"
- "ELASTICSEARCH_HOSTS=http://elasticsearch:9200"
ports:
- "5601:5601"
#volumes:
#- ./kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml
networks:
- elastic_net
depends_on:
- elasticsearch
# 网络配置
networks:
elastic_net:
driver: bridge
5.安装IK分词器
注意:安装IK分词器的版本,必须和Elasticsearch的版本一致,
上文安装的是Elasticsearch 8.12.2的,所以接下来安装的IK分词器版本是8.12.2
这里知道es最新版本是8.13,我为啥用8.12.2了吧,因为IK分词器只更新到8.12.2 :)
(1)获取IK分词器下载地址
IK分词器下载地址:https://github.com/infinilabs/analysis-ik/releases/
![图片[5]-docker-compose 安装部署ElasticSearch 和 Kibana](https://cos.soyisou.cn/wp-content/uploads/2025/04/20250427040041633-image-1024x827.png?watermark/2/text/6ZOt6L2p57K-6YCJCkFjSmF2YQp3d3cuYWNqYXZhLmNvbQ/font/dGFob21hLnR0Zg/fontsize/24/fill/IzAwMDAwMA/dissolve/73/shadow/0/gravity/southeast/dx/20/dy/20)
(2)执行命令安装
进入es容器
docker exec -it es01 /bin/bash
执行在线安装命令
./bin/elasticsearch-plugin install https://github.com/infinilabs/analysis-ik/releases/download/v8.12.2/elasticsearch-analysis-ik-8.12.2.zip
如果环境不能下载,可以先下载到本地,再上传到容器里,执行离线安装命令
./bin/elasticsearch-plugin install /路径/elasticsearch-analysis-ik-8.12.2.zip
重启容器
exit
docker restart es01
之后再查看plugins文件夹里面已经有analysis-ik目录了
![图片[6]-docker-compose 安装部署ElasticSearch 和 Kibana](https://cos.soyisou.cn/wp-content/uploads/2025/04/20250427040127554-image-1024x407.png?watermark/2/text/6ZOt6L2p57K-6YCJCkFjSmF2YQp3d3cuYWNqYXZhLmNvbQ/font/dGFob21hLnR0Zg/fontsize/24/fill/IzAwMDAwMA/dissolve/73/shadow/0/gravity/southeast/dx/20/dy/20)
此时目录结构如下
![图片[7]-docker-compose 安装部署ElasticSearch 和 Kibana](https://cos.soyisou.cn/wp-content/uploads/2025/04/20250427040138863-image.png?watermark/2/text/6ZOt6L2p57K-6YCJCkFjSmF2YQp3d3cuYWNqYXZhLmNvbQ/font/dGFob21hLnR0Zg/fontsize/24/fill/IzAwMDAwMA/dissolve/73/shadow/0/gravity/southeast/dx/20/dy/20)
参考文档:
1.https://www.cnblogs.com/allay/p/18153544
2.https://blog.csdn.net/T_Tboy/article/details/145668988
3.https://blog.csdn.net/Acloasia/article/details/130683934
4. https://blog.csdn.net/qq_27895435/article/details/131430040
5. https://blog.csdn.net/qq_43711451/article/details/137779312
6. https://www.jianshu.com/p/6b8ad80382e9
7. https://blog.csdn.net/Tomwildboar/article/details/134655491
8. https://blog.csdn.net/qq_35787138/article/details/130863261
暂无评论内容