1. 拼音分词器
要实现根据字母做补全,就必须对文档按照拼音分词。在GitHub
上恰好有elasticsearch
的 拼音分词插件。
1.1.1 在线安装
安装步骤:
# 进入容器内部
docker exec -it es /bin/bash
# 在线下载并安装
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-pinyin/releases/download/v7.12.1/elasticsearch-analysis-pinyin-7.12.1.zip
#退出
exit
#重启容器
docker restart es
说明:安装的链接怎么获得
我这里linux
在下载的时候超时了,所以我选择离线安装。
1.1.2 离线安装(推荐)
查看数据卷目录:
安装插件需要知道elasticsearch的plugins目录位置,而我们用了数据卷挂载,因此需要查看elasticsearch的数据卷目录,通过下面命令查看:
docker volume inspect es-plugins
显示结果:
说明plugins目录被挂载到了:/var/lib/docker/volumes/es-plugins/_data
这个目录中。
解压缩分词器安装包:
把下载好的ik
分词器解压缩,重命名为ik
。
上传到
es
容器的插件数据卷中:
也就是/var/lib/docker/volumes/es-plugins/_data
:
重启容器:
docker restart 容器名
测试:
分词结果:
{
"tokens" : [
{
"token" : "kuai",
"start_offset" : 0,
"end_offset" : 0,
"type" : "word",
"position" : 0
},
{
# 这个是 kuai le shi jian 的首字母集合
"token" : "klsj",
"start_offset" : 0,
"end_offset" : 0,
"type" : "word",
"position" : 0
},
{
"token" : "le",
"start_offset" : 0,
"end_offset" : 0,
"type" : "word",
"position" : 1
},
{
"token" : "shi",
"start_offset" : 0,
"end_offset" : 0,
"type" : "word",
"position" : 2
},
{
"token" : "jian",
"start_offset" : 0,
"end_offset" : 0,
"type" : "word",
"position" : 3
}
]
}