IK Analysis:给 Elasticsearch 装上中文分词的老牌插件

📅 2026/7/8 8:01:54
IK Analysis:给 Elasticsearch 装上中文分词的老牌插件
文章目录IK Analysis给 Elasticsearch 装上中文分词的老牌插件1、 这玩意儿解决什么问题2、 两种分词模式怎么选3、 怎么装4、 用起来什么样子5、 自定义词典6、 谁在用IK Analysis给 Elasticsearch 装上中文分词的老牌插件IK Analysis 在 GitHub 上已经拿到 17.4K Star 了。INFINI Labs 维护着这个插件干的事情很专一就是把 Lucene 的 IK 分析器接进 Elasticsearch 和 OpenSearch让这两个搜索引擎能正常切中文词。提供 ik_smart 和 ik_max_word 两套分析器前者粗切后者细切。1、 这玩意儿解决什么问题ES 内置的分词器处理中文基本一刀切按字拆搜出来的结果五花八门。开发者要么自己包一层要么换带中文支持的方案要么干脆不做中文搜索。IK Analysis 把这一层补上。装上插件之后索引数据时指定 analyzer 为 ik_max_word搜索时指定 ik_smart中文内容就能被正确切分成词项匹配率和召回率都能上一个台阶。2、 两种分词模式怎么选ik_max_word 把文本切到最细。输入中华人民共和国国歌会切出中华人民共和国、中华人民、中华、华人、人民共和国、人民、人、民、共和国、共和、和、国国、国歌把各种可能的组合都列出来。适合 Term Query靠它建索引能把召回拉满。ik_smart 切到最粗。同样那句只会切出中华人民共和国、国歌两段。适合 Phrase Query做精确匹配时用不会把无关结果带出来。两种切分结果并非子集关系选哪个看场景并非越细越好。3、 怎么装两种方式二选一。直接下打包好的 zipbin/elasticsearch-plugin install https://get.infini.cloud/elasticsearch/analysis-ik/9.1.4OpenSearch 同理把 elasticsearch-plugin 换成 opensearch-pluginURL 换成对应版本即可。或者去 release.infinilabs.com 下打包好的插件文件按 ES 版本对应安装。装完重启节点生效。注意版本号必须跟 ES 主版本对上对不上插件加载会失败。4、 用起来什么样子建索引、设 mapping、灌数据、查询四步走。mapping 里把字段的 analyzer 设成 ik_max_wordsearch_analyzer 设成 ik_smart。灌数据走 _create API查询走 _search。配合 highlight 能把命中词项直接标出来前端展示搜索结果的时候挺有用。这套流程跑下来不复杂对习惯 ES 的人没什么学习负担。5、 自定义词典IK 自带主词典业务里那些专有名词、黑话、新词基本覆盖不到。配置文件 IKAnalyzer.cfg.xml 放在 conf/analysis-ik 目录下里面能挂本地扩展词典、扩展停用词词典也能挂远程词典。远程那块是热更新入口。配一个 HTTP URLIK 周期去拉只要响应里 Last-Modified 或 ETag 有变化就重新加载词库不用重启 ES。HTTP 响应得满足两条要求。返回头里要有 Last-Modified 和 ETag 两个字段都是字符串任一个变化就触发更新。返回体一行一个词换行符是 \n。实际部署里很多人把词典放在 nginx 或某个静态文件服务下改词直接改 txtES 节点不用动。也有自己起个服务从业务系统抽词的怎么方便怎么来。6、 谁在用做内容搜索、电商搜索、企业内搜索的开发者用 ES 做日志分析、需要中文分词支持的运维搭知识库、需要中文召回率的团队INFINI Labs 在持续维护适配 ES 主要版本。社区活跃度不算特别高但这是个成熟项目能踩的坑前人都踩完了issue 区能翻到答案。abs 在持续维护适配 ES 主要版本。社区活跃度不算特别高但这是个成熟项目能踩的坑前人都踩完了issue 区能翻到答案。