ES中文分词器插件
官方地址:https://github.com/infinilabs/analysis-ik
安装
快速安装
插件安装(将链接最后的版本号换成当前ES版本号):
shell
bin/elasticsearch-plugin install https://get.infini.cloud/elasticsearch/analysis-ik/8.4.1
注:
- 上述地址可正常访问,无需特殊网络配置
- 如果是通过 Docker 部署的 ES,可参考下述命令
shell
# 进入容器
docker exec -it 容器名称 bash
# 切换指定目录
cd /usr/share/elasticsearch
# 执行安装命令
bin/elasticsearch-plugin install https://get.infini.cloud/elasticsearch/analysis-ik/8.4.1
# 退出容器
exit
# 重启ES容器
docker restart 容器名称
手动安装
下载地址:https://release.infinilabs.com/
参考路径:
安装方式:
- 下载与当前ES版本相同的分词器安装包
- 进入ES安装目录,找到 plugins 文件夹,在里面新建一个名为 analysis-ik 的文件夹,把下载的安装包解压后放进该文件夹中
- 重启ES
命令参考:
shell
# 进入plugins 文件夹
cd plugins
# 将下载好的文件上传到该目录或这直接下载到该目录
wget https://release.infinilabs.com/analysis-ik/stable/elasticsearch-analysis-ik-9.0.5.zip
# 创建文件夹 analysis-ik
mkdir analysis-ik
# 解压文件到 analysis-ik
unzip elasticsearch-analysis-ik-9.0.5.zip -d analysis-ik/
# 重启ES
应用
ik_max_word 与 ik_smart 的区别
- 关联关系
分词器 | 说明 |
---|---|
ik_max_word |
最细粒度切分 ,会将文本做尽可能多的拆分,适合 索引阶段(indexing) |
ik_smart |
智能粗粒度切分 ,会做合并优化,切分结果更少,适合 搜索阶段(searching) |
- 示例对比
文本:"中华人民共和国"
分词器 | 结果 |
---|---|
ik_max_word |
中华 , 华人 , 人民 , 共和 , 共和国 , 中华人民共和国 , ...(多个结果) |
ik_smart |
中华人民共和国 (一个结果,智能合并) |
- 实际使用场景(推荐配置)
json
PUT /news_index
{
"settings": {
"analysis": {
"analyzer": {
"my_index_analyzer": {
"type": "custom",
"tokenizer": "ik_max_word"
},
"my_search_analyzer": {
"type": "custom",
"tokenizer": "ik_smart"
}
}
}
},
"mappings": {
"properties": {
"title": {
"type": "text",
"analyzer": "my_index_analyzer",
"search_analyzer": "my_search_analyzer"
}
}
}
}
- 索引时用
ik_max_word
:确保尽可能多的关键词被收录- 搜索时用
ik_smart
:避免用户输入被过度拆分,提升召回准确率
验证是否生效
json
POST /_analyze
{
"analyzer": "ik_max_word",
"text": "人工智能"
}
json
POST /_analyze
{
"analyzer": "ik_smart",
"text": "人工智能"
}
如果都能返回中文分词结果,说明插件安装成功,两个分词器都可用。