小易说IT 小易说IT

如何在Elasticsearch中安装IK分词器

✅ 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

方式二:离线安装(内网、无外网最常用)

  1. 去 release 下载 elasticsearch-analysis-ik-xxx.zip,版本和 ES 严格一致

  2. 进入 ES 的plugins目录,新建 ik 文件夹(名字随便,建议 ik)

  3. 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 文件夹下!

  1. 重启 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>
  1. 在同目录新建 custom.dic,一行一个词,UTF-8 无 BOM 编码(Windows 容易踩坑!)

  2. 重启 ES 生效;高版本 IK 支持远程 http 词典热更新,不用重启

⚠️ 高频踩坑清单

  1. 版本不一致 → ES 启动失败(90% 报错原因)

  2. 解压嵌套一层文件夹,ES 识别不到插件

  3. Windows 词典文件编码不是 UTF-8,中文乱码不生效

  4. Docker 容器内权限问题:plugins 目录权限改为 es 用户

  5. ES8 安全模式:请求必须带上 username:password

  6. 集群多节点:所有节点都必须安装 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,转载请注明出处。

原文链接 https://www.yijunzhao.cc/archives/how-to-install-ik-analyzer-in-elasticsearch

欢迎访问 https://www.yijunzhao.cc/

https://www.yijunzhao.cc/