为什么要安装ik呢?因为elasticsearch默认的分词器在拆分汉子的时候,会将一句话拆分成单个汉子去查询,这样对于汉语分词不太友好,比如我搜索的时候输入了“企业中心”,我并不希望这四个字被拆分为“企”“业”“中”“心”,而是“企业”“中心”,这时候就需要用到ik分词器了。
版本号
对应于我的博客https://blog.csdn.net/msx985211/article/details/102809980中elasticsearch的版本号,即7.2.0。
下载
访问https://github.com/medcl/elasticsearch-analysis-ik/releases,选择与你的elasticsearch相对应的版本(我这里选择的是7.2.0),如下图所示复制下载链接:
执行命令 wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.2.0/elasticsearch-analysis-ik-7.2.0.zip 下载压缩包。
安装
下载完成之后,先到elasticsearch的plugin目录下执行命令 mkdir ik 创建ik文件夹,然后将下载的压缩包放到ik文件夹中,并执行命令 unzip elasticsearch-analysis-ik-7.2.0.zip 解压,解压后删除压缩包,解压后内容如下:
重启elasticsearch,在kibana中执行
GET _analyze
{
"analyzer": "ik_max_word",
"text": ["企业中心"]
}
如果返回的分词为“企业”“中心”,说明ik安装成功。
测试
创建指定分词器的索引
PUT project_project
{
"settings":{
"number_of_shards": "6",
"number_of_replicas": "1",
"analysis":{
"analyzer":{
"ik":{
"tokenizer":"ik_max_word"
}
}
}
},
"mappings":{
"properties":{
"name":{
"type":"text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"type":{
"type":"text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}
上面json中ik_max_word就是我们指定的ik分词器。
给project_project索引下添加一些数据。
查询测试:
上述测试中,京兰会被拆成京和兰,因此会查询出name中有京和兰两个字的记录。