services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.5.0
container_name: elasticsearch
environment:
- discovery.type=single-node
- ES_JAVA_OPTS=-Xms512m -Xmx512m
- xpack.security.enabled=false # 关闭密码(必须)
- xpack.security.enrollment.enabled=false
- xpack.security.http.ssl.enabled=false
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- es_data:/usr/share/elasticsearch/data
ports:
- 9200:9200
networks:
- elastic
restart: always
kibana:
image: docker.elastic.co/kibana/kibana:8.5.0
container_name: kibana
environment:
- ELASTICSEARCH_HOSTS=http://elasticsearch:9200 # 修复这里
- I18N_LOCALE=zh-CN # 中文界面
ports:
- 5601:5601
networks:
- elastic
depends_on:
- elasticsearch
restart: always
logstash:
image: docker.elastic.co/logstash/logstash:8.5.0
container_name: logstash
environment:
- ELASTICSEARCH_HOST=http://elasticsearch:9200
ports:
- 5044:5044
networks:
- elastic
depends_on:
- elasticsearch
restart: always
volumes:
es_data:
driver: local
networks:
elastic:
driver: bridge
🔍 第一步:确认 IK 分词器是否安装
在终端执行下面命令,查看已安装的插件列表:
bash
docker exec elasticsearch bin/elasticsearch-plugin list
- 如果输出里没有
analysis-ik,说明插件根本没装上 - 如果有
analysis-ik,但还是报错,说明插件版本不匹配或安装方式有问题
🛠️ 第二步:一键重装 IK 分词器(推荐)
-
先进入容器(用 root 权限)
bashdocker exec -it --user root elasticsearch bash -
安装
unzip(用来解压)bashapt-get update && apt-get install -y unzip apt-get update && apt-get install -y wget unzip -
进入插件目录并下载安装
bashcd /usr/share/elasticsearch/plugins wget https://release.infinilabs.com/analysis-ik/stable/elasticsearch-analysis-ik-8.5.0.zip unzip elasticsearch-analysis-ik-8.5.0.zip -d ik-analyzer rm -rf elasticsearch-analysis-ik-8.5.0.zip exit -
重启 ES 容器
bashdocker restart elasticsearch
✅ 第三步:验证安装是否成功
重启后再执行插件列表命令:
bash
docker exec elasticsearch bin/elasticsearch-plugin list
看到 analysis-ik 就说明装好了。
然后在 Kibana 控制台测试:
json
POST /_analyze
{
"analyzer": "ik_smart",
"text": "我是中国人"
}
如果返回正常分词结果,说明安装成功了 ✅
💡 常见坑说明
- 版本必须完全一致:IK 分词器的版本必须和你的 ES 版本(8.5.0)完全一样,不能用 7.x 或 8.4 的版本
- 必须重启容器 :安装完插件后,必须
docker restart elasticsearch,否则不会生效