Elasticsearch自带的分词器对中文分词不是很友好,所以我们下载开源的IK分词器来解决这个问题。首先进入到plugins目录中下载分词器,下载完成后然后解压,再重启es即可。具体步骤如下: 注意:elasticsearch的版本和ik分词器的版本需要保持一致,不然在重启的时候会失败。可以在这查看所有版本,选择合适自己版本的右键复制链接地址即可。在该链接中找到符合自己版本的:https://github.com/medcl/elasticsearch-analysis-ik/releases
docker exec -it elasticsearch /bin/bash
cd /usr/share/elasticsearch/plugins/
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.5.1/elasticsearch-analysis-ik-7.5.1.zip
exit
docker restart elasticsearch
由于通过上述方式安装由于网络问题可能实现不了,所以可以通过离线安装
通过https://github.com/medcl/elasticsearch-analysis-ik/releases下载对应版本安装包
在es的plugins文件下(/usr/share/elasticsearch/plugins/)创建ik文件夹
cd /usr/share/elasticsearch/plugins/
mkdir ik
将下载好的安装包拷贝在这个文件夹下,同时减压即可
注意:安装es的ik分词器需要安装jdk
测试:
POST http://localhost:9200/_analyze?pretty=true
{
"analyzer": "ik_max_word",
"text": "中国人民的儿子"
}
结果:
{
"tokens" : [
{
"token" : "中国人民",
"start_offset" : 0,
"end_offset" : 4,
"type" : "CN_WORD",
"position" : 0
},
{
"token" : "中国人",
"start_offset" : 0,
"end_offset" : 3,
"type" : "CN_WORD",
"position" : 1
},
{
"token" : "中国",
"start_offset" : 0,
"end_offset" : 2,
"type" : "CN_WORD",
"position" : 2
},
{
"token" : "国人",
"start_offset" : 1,
"end_offset" : 3,
"type" : "CN_WORD",
"position" : 3
},
{
"token" : "人民",
"start_offset" : 2,
"end_offset" : 4,
"type" : "CN_WORD",
"position" : 4
},
{
"token" : "的",
"start_offset" : 4,
"end_offset" : 5,
"type" : "CN_CHAR",
"position" : 5
},
{
"token" : "儿子",
"start_offset" : 5,
"end_offset" : 7,
"type" : "CN_WORD",
"position" : 6
}
]
}