本文档为您介绍阿里云Elasticsearch(简称ES)的系统默认插件中,IK分词插件的冷更新和热更新。

阿里云ES的IK分词插件支持以下两种IK词典的更新方式:
注意
  • 对于已经配置了IK分词器的索引,在IK词典冷/热更新操作完成后将只对新数据生效。如果您希望对全部数据生效,需要重建索引。
  • 阿里云ES IK分词插件在开源IK基础上优化了热加载能力,即二次上传同名文件不触发重启,在运行过程中直接加载词库,冷更新除外。

IK词典冷更新

IK词典冷更新需要对整个集群的词典进行更新操作。在使用IK冷更新时,会将您上传的词典文件传送到Elasticsearch节点上,并修改IKAnalyzer.cfg.xml文件,然后重启Elasticsearch节点加载词典文件。

IK词典冷更新支持修改IK自带的主词库及停用词主词库。在IK词典冷更新页面可以看到系统自带的主词典即SYSTEM_MAIN.dic,系统自带的停用词主词典即SYSTEM_STOPWORD.dic
说明
  • 如果您需要修改系统自带主词典文件,可以上传以SYSTEM_MAIN.dic为名的主词典,系统自动覆盖原始内容,关于更多主词库说明,请参见IK Analysis for Elasticsearch
  • 如果您需要修改系统自带的停用词主词典文件,可以上传以SYSTEM_STOPWORD.dic为名的停用词主词典,系统自动覆盖原始内容,关于更多停用词库的说明,请参见IK Analysis for Elasticsearch停用词配置说明

使用示例(IK词典冷更新)

  1. 登录阿里云Elasticsearch控制台,单击您需要进行IK更新的Elasticsearch实例ID。
  2. 单击左侧导航栏的插件配置,找到需要更新的IK插件,单击其右侧操作栏下的冷更新IK词典冷更新入口
  3. 插件配置页面,单击右下方的配置配置
  4. 单击IK主分词词库右下方的上传dic文件,上传一个扩展主词典文件。
    说明 系统支持上传dic文件添加OSS文件两种词典更新方式。在远程词典文件内容变更后,两种方式都需要重新上传词典文件才能生效。
    IK主分词词库
    警告 以下操作会重启实例,为保证您的业务不受影响,请确认后操作。
  5. 滑动到页面底端,勾选该操作会重启实例按钮,请确认后操作,单击保存重启实例提示
  6. 重启成功后,登录Kibana控制台,执行以下命令测试词典是否生效。
    GET _analyze
    {
    "analyzer": "ik_smart",
    "text": ["您词典中包含的词"]
    }
    注意
    • 系统不支持删除自带的主词典和停用词主词典。
    • 无论是词典文件变化,还是词典内容发生变化,冷更新操作都会触发集群重启。
    • 只能在集群健康的状态下进行更新。

IK词典热更新

IK词典热更新是当词典文件内容发生变化的时候,上传词典文件后Elasticsearch节点能自动加载词典文件,实现词典的更新操作。

在使用IK词典热更新功能时,如果词典文件列表发生变化,例如上传新词典文件或删除词典文件,那么整个集群都需要重新加载词典的配置(因为会涉及到修改IKAnalyzer.cfg.xml文件)。

IK词典热更新与上文的IK词典冷更新操作类似。第一次上传词典时,需要修改IKAnalyzer.cfg.xml文件,所以在更新词典后,需要重启集群才能生效。

使用示例(IK词典热更新)

  1. 登录阿里云Elasticsearch控制台,单击您需要进行IK更新的Elasticsearch实例ID。
  2. 单击左侧导航栏的插件配置,找到需要更新的IK插件,单击其右侧操作栏下的热更新IK词典热更新入口
  3. 插件配置页面,单击右下方的配置配置
  4. 单击IK主分词词库右下方的上传dic文件,上传一个扩展主词典文件。
    说明 系统支持上传dic文件添加OSS文件两种词典更新方式。在远程词典文件内容变更后,两种方式都需要重新上传词典文件才能生效。
    插件配置
    警告 以下操作会重启实例,为保证您的业务不受影响,请确认后操作。
  5. 滑动到页面底端,勾选该操作会重启实例按钮,请确认后操作(第一次上传词典文件,需要重启),单击保存确认实例重启

    保存后,集群会触发Rolling操作,等待集群Rolling结束后,词典会自动生效。

    词典使用一段时间后,如果您需要扩充或者减少词典中的内容,可继续执行以下步骤对上述a_10words.dic文件进行修改。

  6. 进入词典热更新页面,先删除之前上传的同名词典文件,重新上传修改过的a_10words.dic同名词典文件。
    因为修改的是已存在的同名词典文件的内容,所以本次上传修改过的同名词典文件不需要Rolling整个集群。插件配置
  7. 单击保存
    因为使用的是Elasticsearch节点上插件自动加载的词典文件,所以每个节点获取词典文件的可能时间不同,请耐心等待词典生效。大概两分钟后再使用更新之后的词典,为了保证准确性,请登录Kibana控制台,多次执行以下命令进行验证。
    GET _analyze
    {
    "analyzer": "ik_smart",
    "text": ["您词典中包含的词"]
    }
    说明 IK热更新不支持修改系统自带的主词典,如果您需要修改系统主词典请使用IK冷更新的方式。

停用词配置说明

阿里云ES默认的停用词词库配置文件中,包含了一些默认的停用词,例如:
  • 英文:a,an,and,are,as,at,be,but,by,for,if,in,into,is,it,no,not,of,on,or,such,that,the,their,then,there,these,they,this,to,was,will,with
  • 中文:也,了,仍,从,以,使,则,却,又,及,对,就,并,很,或,把,是,的,着,给,而,被,让,在,还,比,等,当,与,于,但

如果您需要去掉一些不需要的默认停用词,可通过以下步骤进行操作:

  1. 下载ES默认的IK分词配置文件
  2. 解压配置文件,并打开config目录下的stopword.dic文件。
  3. 删除不需要的停用词,并保存。
  4. 修改stopword.dic文件名为SYSTEM_STOPWORD.dic
  5. 上传修改后的SYSTEM_STOPWORD.dic文件,覆盖当前默认的停用词配置文件。
  6. 确认后重启,即可更新停用词配置文件。