坚持原创,共同进步!请关注我,后续分享更精彩!!!
前言
ElasticSearch默认的分词插件对中文支持很不友好。一段话按规则会以每个中文字符来拆解,再分别建立倒排索引。如"中华人民共和国国歌",默认分词会建立 中、华、人、民、共、和、国、歌共8个索引,而不是更合理的"中华人民共和国"、"国歌" 索引。这不仅浪费索引空间,基于中文语义的关键字搜索匹配也极其低下。
本文将介绍,如何在elasticSearch中安装IK中文分词插件,以便更好应用于中文汉字信息的搜索场景。
前提条件docker工具安装
elasticSearch 6.8.8安装
本文安装插件基于docker环境,ik插件版本需与es版本匹配,否则会安装不成功。
插件安装安装分 在线 和 离线 两种安装方式。
在线安装# 1. 进入es docker容器
docker exec -it {替换为ES容器名或id} sh
# 2. 下载安装包,在线安装
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.8.8/elasticsearch-analysis-ik-6.8.6.zip
# 网速慢可以用以下地址
./bin/elasticsearch-plugin install https://shrill-pond-3e81.hunsh.workers.dev/https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.8.6/elasticsearch-analysis-ik-6.8.6.zip
github文件下载可能很慢,下载失败可以替换成其他国内地址。注意插件版本需与es版本匹配。
手动下载中文分词插件elasticsearch-analysis-ik-6.8.6.zip
将插件复制到docker容器
docker cp /tmp/elasticsearch-analysis-ik-6.8.6.zip {替换为ES容器名或id}:/usr/share/elasticsearch/plugins
进入容器
docker exec -it {替换为ES容器名或id} sh
创建插件目录
mkdir /usr/share/elasticsearch/plugins/ik
移动文件到插件目录
mv /usr/share/elasticsearch/plugins/elasticsearch-analysis-ik-6.8.6.zip /usr/share/elasticsearch/plugins/ik
进入目录并解压
cd /usr/share/elasticsearch/plugins/ik
unzip elasticsearch-analysis-ik-6.8.6.zip
退出并重启容器
exit
docker restart {替换为ES容器名或id}
验证插件
在kibana工具的devtool中执行,匹配以下结果表明插件安装成功。
GET /_analyze?pretty
{
"analyzer": "ik_smart",
"text": ["中华人民共和国国歌"]
}
返回结果:
{
"tokens" : [
{
"token" : "中华人民共和国",
"start_offset" : 0,
"end_offset" : 7,
"type" : "CN_WORD",
"position" : 0
},
{
"token" : "国歌",
"start_offset" : 7,
"end_offset" : 9,
"type" : "CN_WORD",
"position" : 1
}
]
}
总结
基于es ik中文分词插件的安装,本文做了如下介绍。希望能对大家有所帮助和参考。
首先分析了es默认分词器对中文分词的不足;
然后讲解了es在线和离线的两种安装方式;
最后通过es的可视化kibana工具进行插件是否安装成功的验证。