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

阿里云ES的IK分词插件支持以下两种IK词典的更新方式。
注意 对于已经配置了IK分词器的索引,在IK词典冷/热更新操作完成后将只对新数据生效。如果您希望对全部数据生效,需要重建索引。

IK词典冷更新

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

IK词典冷更新支持修改IK自带的主词库及停用词主词库。在IK词典冷更新页面可以看到系统自带的主词典即SYSTEM_MAIN.dic,系统自带的停用词主词典即SYSTEM_STOPWORD.dic
说明
  • 如果您需要修改系统自带主词典文件,可以上传以SYSTEM_MAIN.dic为名的主词典。
  • 如果您需要修改系统自带的停用词主词典文件,可以上传以SYSTEM_STOPWORD.dic为名的停用词主词典。

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

  1. 登录阿里云Elasticsearch控制台,单击您需要进行IK更新的Elasticsearch实例ID。
  2. 单击左侧导航栏的插件配置,找到需要更新的IK插件,单击其右侧操作栏下的冷更新IK词典冷更新入口
  3. 插件配置页面,单击右下方的配置
  4. 单击IK主分词词库右下方的上传dic文件,上传一个扩展主词典文件。
    说明 系统支持上传dic文件添加OSS文件两种词典更新方式。在远程词典文件内容变更后,两种方式都需要重新上传词典文件才能生效。
    注意 以下操作会重启实例,为保证您的业务不受影响,请确认后操作。
  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冷更新的方式。

参考文档:elasticsearch-analysis-ik