IK分词插件(analysis-ik)是阿里云Elasticsearch(简称ES)的扩展插件,提供了基于词典的分词能力,默认不能卸载。所有类型的词典均默认使用IK分词插件的原生配置文件,通过更新词典,您可以修改IK分词插件的默认词库或添加新的词库,改善分词效果,让分词结果更加符合业务场景需求。在开源插件的基础上,IK分词插件扩展支持了通过对象存储OSS动态加载词典文件的功能。
前提条件
集群状态为正常,可在实例的基本信息页面查看。具体操作请参见查看实例的基本信息。
部分低版本实例的界面和支持的功能可能与本文有区别,请以控制台为准。
IK分词插件介绍
IK分词器的分词规则
IK分词插件的分词器的分词规则包括ik_smart和ik_max_word两种:
ik_max_word:将文本按照最细粒度进行拆分,适合术语查询。
ik_smart:将文本按照粗粒度进行拆分,适合短语查询。
支持的词典类型
IK分词插件支持以下几种词典类型:
词典类型 | 词典说明 | 词典文件要求 | 更新方式 |
主词典(main.dic) | IK分词插件原生内置的主词典包含27万多条中文词语。 如果在创建ES索引时指定了主分词词典,向集群中写入数据时,数据中包含主分词词典中的词,集群就会建立索引,并且该索引能通过关键词被查询到。 | 每行一个词,保存为UTF-8编码的DIC文件。 | |
停用词词典(stopword.dic) | IK分词插件原生内置的停用词词典中包含英文的停用词,例如a、the、and、at、but等。 如果在创建ES索引时指定了停用词词典,向索引中写入数据时,数据中包含的停用词词典中的词会被过滤掉,不会出现在倒排索引中。 | ||
介词词典(preposition.dic) | 存放介词 | - | |
量词词典(quantifier.dic) | 存放单位相关的词和量词。 | ||
suffix.dic | 存放后缀 | - | 不支持更新 |
surname.dic | 存放中国的姓氏。 |
支持的词典更新方式
阿里云ES的IK分词插件支持IK词典冷更新和IK词典热更新。
更新方式 | 生效方式 | 加载方式 | 推荐应用场景 |
冷更新 | 对整个集群的词典进行更新,词典生效会触发集群重启。 | 系统将上传的词典文件传送到ES节点上,然后重启ES节点加载词典文件。 |
|
热更新 |
|
| 如果您需要扩充主词典或停用词词典文件,或变更扩充词典文件,建议使用IK词典热更新。 |
更新词典
对于已经配置了IK分词的索引,IK词典冷更新或热更新完成后,将只对新数据(包含新增数据和更新后的数据)生效。如果您希望对全部数据生效,需要重建索引。
IK词典冷更新
您可以通过冷更新方式替换词典文件,替换过程需要重启ES集群。
冷更新操作会触发集群重启,为保证您的业务不受影响,请在业务低峰期进行操作。
- 登录阿里云Elasticsearch控制台。
- 在左侧导航栏,单击Elasticsearch实例。
- 进入目标实例。
- 在顶部菜单栏处,选择资源组和地域。
- 在Elasticsearch实例中单击目标实例ID。
在左侧导航栏,选择 。
在系统默认插件列表页签,找到analysis-ik插件,在其右侧操作列中单击冷更新。
在IK词库配置-冷更新控制面板,单击目标词典右侧的编辑,添加或替换对应的词典文件后单击保存。
词典文件更新方式包括:
上传本地文件:单击文件上传区域上传词典文件,或拖拽词典文件到上传区域。
上传OSS文件:输入Bucket名称和词典文件名称,单击添加。
Bucket与阿里云ES实例需要在同一地域。
不支持自动同步更新词典文件。源端OSS中的词典文件内容发生变化后,需要通过冷更新使之生效。
说明词典文件后缀必须是
.dic
,词典文件名可以包含大小写字母、数字和下划线,长度不超过30个字符。每种类型的词典仅支持上传一个DIC格式文件,变更发起后会用您上传的词典替换原词典。
如果您需要恢复词典的默认文件,下载默认词典文件后上传。获取默认词典文件,请单击下载:
单击确定。
ES实例重启成功后,即词典文件更新成功。
(可选)登录ES实例的Kibana控制台,测试词典是否生效。
说明登录Kibana控制台,请参见登录Kibana控制台。
在Kibana控制台的开发工具(Dev Tools)上执行以下代码:
GET _analyze { "analyzer": "ik_smart", "text": ["您词典中包含的词"] }
IK词典热更新
您可以通过扩展词典更新的方式扩充主词典和停用词词典。如果词典文件名和文档数量不发生变化,则不需要重启ES集群。
- 登录阿里云Elasticsearch控制台。
- 在左侧导航栏,单击Elasticsearch实例。
- 进入目标实例。
- 在顶部菜单栏处,选择资源组和地域。
- 在Elasticsearch实例中单击目标实例ID。
在左侧导航栏,选择 。
在系统默认插件列表页签,找到analysis-ik插件,在其右侧的操作列中单击热更新。
在IK词库配置-热更新控制面板,单击目标词典右侧的编辑,上传对应的词典文件后单击保存。
词典文件更新方式包括:
上传本地文件:单击文件上传区域上传词典文件,或拖拽词典文件到上传区域。
上传OSS文件:输入Bucket名称和词典文件名称,单击添加。
Bucket与阿里云ES实例需要在同一地域。
不支持自动同步更新词典文件。源端OSS中的词典文件内容发生变化后,需要通过热更新使之生效。
说明词典文件后缀必须是
.dic
,文件名可以包含大小写字母、数字和下划线,长度不超过30个字符。如果您需要修改已上传的词典文件内容,可单击目标词典文件右侧的图标,下载、修改词典文件,然后删除源词典文件并重新上传。
支持上传多个词典文件,仅词典文件内容发生变化时集群不需要重启,文件名称或文件数量发生变化时需要集群重启。为保证您的业务不受影响,请在业务低峰期进行操作,等待重启结束后,词典会自动生效。
在页面底部,单击确定。
阿里云ES节点上的插件具有自动加载词典文件的功能,但每个节点获取词典文件的可能时间不同,请耐心等待词典生效。
(可选)登录ES实例的Kibana控制台,测试词典是否生效。
说明登录Kibana控制台,请参见登录Kibana控制台。
为保证准确性,在Kibana控制台的开发工具(Dev Tools)上多次执行以下命令进行验证。
GET _analyze { "analyzer": "ik_smart", "text": ["您词典中包含的词"] }
相关文档
IK词典热更新的API文档:UpdateHotIkDicts
IK词典冷更新的API文档:UpdateDict