首页/数据/NoSQL 速查/IK 中文分词器安装与使用
Elasticsearch89 条

IK 中文分词器安装与使用

IK 是常见的中文分词插件:安装包版本必须与集群版本一致,安装后需重启节点;映射里可分别指定索引期 analyzer 与查询期 search_analyzer。

NoSQL 速查数据更新于 2026-10-13

IK 是做什么的

IK 是社区维护的中文分词插件(elasticsearch-analysis-ik)。Elasticsearch 自带的 standard 分析器对中文基本按单字切分,中文检索召回与相关度都不理想;装上 IK 后可获得词级切分,并且支持通过自定义词典补充专有名词。插件属于第三方组件,版本必须与集群严格对应。

基本信息

适用平台Elasticsearch 7.x / 8.x(自建集群)
安装命令bin/elasticsearch-plugin install <插件 zip 的 URL 或本地路径>
版本要求插件版本号与 ES 版本严格一致
常用分析器ik_max_word(细粒度,索引期)、ik_smart(粗粒度,查询期)
词典位置config/analysis-ik/ 下的主词典与停用词典

典型使用场景

  • 中文站内搜索:标题、正文、商品名需要按词匹配而不是按单字
  • 专有名词与品牌型号:词典没有的词会被切碎,导致召回偏低,需要补充自定义词典
  • 中英混合内容:中文走 IK,英文单词仍按词处理
  • 细索引粗查询:索引期用 ik_max_word 提高召回,查询期用 ik_smart 提升精确度
  • 排查词搜不到:用 _analyze 看查询串与文档字段各自被切成了什么

安装示例

安装示例
# 下载与集群同版本的插件包后本地安装(8.x 示例,把 x.y.z 换成实际版本)
bin/elasticsearch-plugin install file:///tmp/elasticsearch-analysis-ik-8.x.y.zip

# 集群节点需逐个重启,重启前确认分片已恢复,避免一次性停整群
systemctl restart elasticsearch

# 验证插件已装好
bin/elasticsearch-plugin list

# 验证分词效果(请求体写法,比查询参数形式更稳)
GET /_analyze
{ "analyzer": "ik_smart", "text": "其其网文档中心" }

映射配置

映射配置
{
  "properties": {
    "title": {
      "type": "text",
      "analyzer": "ik_max_word",
      "search_analyzer": "ik_smart"
    }
  }
}

分析器对照

分析器切分粒度适用位置
ik_max_word最细粒度,穷尽可能的组合索引期 analyzer,提升召回
ik_smart粗粒度,做最少切分查询期 search_analyzer,提升精确度
standard按字符规则切分,中文基本单字中文检索不建议作为主分析器
自定义词典补充品牌、型号、行业术语词典未命中时这些词会被切碎
索引期用 ik_max_word、查询期用 ik_smart 是常见组合:写入时尽量多切以扩大召回,查询时切得粗一些以减少噪声。两侧的分析器都要显式写清楚,别只配一半。
自定义词典扩展方式分本地与远程两类:远程词典(在 IKAnalyzer.cfg.xml 里配置地址)支持热更新,不用重启;本地词典文件的生效方式取决于插件版本,稳妥做法是重启节点后用 _analyze 验证。
更换字段分析器属于需要重建索引的变更:已写入的倒排索引不会自动重切,只改 mapping 会让新旧数据分词口径不一致,必须用 _reindex 重灌或按新映射重建。

易错点

  • 插件与 ES 版本不一致是节点起不来的高频原因 → 升级集群前先规划插件同步升级
  • 只改索引期或只改查询期分析器,同一个词仍搜不到 → 两侧一起改,并分别用 _analyze 验证
  • 专有名词没加进自定义词典,被切成单字导致 term 查询命中不到 → 补词典后重建索引
  • 装完插件没重启节点,分析器在 mapping 里报未知分析器错误
  • 索引期用了 ik_smart(切得粗),查询侧再细也匹配不上 → 索引期固定用 ik_max_word

数据来源与参考

  • Elasticsearch 中文分词插件 elasticsearch-analysis-ik(GitHub medcl)
  • Elasticsearch Guide: Analysis
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌