✅ IK 分词器保姆安装教程(重点:IK 版本必须和 ES 版本完全一致!)
仓库地址:https://github.com/medcl/elasticsearch-analysis-ik/releases腾讯云开发...
ES8.x 注意:ES8 默认开启安全认证,安装完插件重启、测试都要带上账号密码;集群每个节点都要装 IK!
方式一:在线安装(有外网,推荐)
Linux / Mac
# 替换下面链接里的版本号,和你的ES版本一样
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.15.0/elasticsearch-analysis-ik-8.15.0.zip
Windows
bin\elasticsearch-plugin.bat install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.15.0/elasticsearch-analysis-ik-8.15.0.zip
查看已装插件:
./bin/elasticsearch-plugin list
删除插件:
./bin/elasticsearch-plugin remove analysis-ik
方式二:离线安装(内网、无外网最常用)
去 release 下载
elasticsearch-analysis-ik-xxx.zip,版本和 ES 严格一致进入 ES 的
plugins目录,新建 ik 文件夹(名字随便,建议 ik)zip 上传到 ik 目录,解压,不要嵌套文件夹!
# 示例
cd elasticsearch/plugins
mkdir ik
cd ik
unzip elasticsearch-analysis-ik-8.15.0.zip
rm elasticsearch-analysis-ik-8.15.0.zip
❌ 坑:解压后不能是 plugins/ik/elasticsearch-analysis-ik-8.15.0/xxx,jar 包必须直接在 ik 文件夹下!
重启 Elasticsearch 启动日志看到
loaded plugin [analysis-ik]代表加载成功腾讯云开发...
方式三:Docker 部署 ES 安装 IK(高频场景)
两种方案:
方案 A:启动挂载 plugins(推荐)
# 本地提前下载好ik,解压到 ./es-plugins/ik
docker run -d \
--name es \
-p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-v ./es-plugins:/usr/share/elasticsearch/plugins \
docker.elastic.co/elasticsearch/elasticsearch:8.15.0
方案 B:自定义 Dockerfile 打包
FROM docker.elastic.co/elasticsearch/elasticsearch:8.15.0
RUN bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.15.0/elasticsearch-analysis-ik-8.15.0.zip
🧪 测试分词(Kibana DevTools / Postman)
IK 两种分词模式:
ik_max_word:最细粒度拆分(穷尽所有词,适合索引)ik_smart:粗粒度智能拆分(适合搜索)
POST _analyze
{
"analyzer": "ik_max_word",
"text": "南京长江大桥"
}
POST _analyze
{
"analyzer": "ik_smart",
"text": "南京长江大桥"
}
📖 自定义扩展词库(新增业务词汇)
配置文件路径:plugins/ik/config/IKAnalyzer.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 扩展配置</comment>
<!-- 扩展词典 -->
<entry key="ext_dict">custom.dic</entry>
<!-- 停用词词典 -->
<entry key="ext_stopwords">stop.dic</entry>
</properties>
在同目录新建
custom.dic,一行一个词,UTF-8 无 BOM 编码(Windows 容易踩坑!)重启 ES 生效;高版本 IK 支持远程 http 词典热更新,不用重启
⚠️ 高频踩坑清单
版本不一致 → ES 启动失败(90% 报错原因)
解压嵌套一层文件夹,ES 识别不到插件
Windows 词典文件编码不是 UTF-8,中文乱码不生效
Docker 容器内权限问题:plugins 目录权限改为 es 用户
ES8 安全模式:请求必须带上
username:password集群多节点:所有节点都必须安装 IK,否则查询报错
📌 创建索引指定 IK 分词器示例
PUT article
{
"settings": {
"number_of_shards": 1
},
"mappings": {
"properties": {
"title": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_smart"
},
"content": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_smart"
}
}
}
}本文原创作者:易君召,详见:https://www.yijunzhao.cc/about,转载请注明出处。
原文链接
欢迎访问