一、安装 IK 分词器
1.分配伪终端
我的 ElasticSearch 是使用 Docker 安装的,所以先给容器分配一个伪终端.之后就可以像登录服务器一样直接操作docker 中的内容了docker exec -it 容器ID /bin/bash
2.使用 elasticsearch-plugin 安装插件
cd plugins
进入到 plugins 文件夹
执行如下命令,7.12.0 需要修改成你的 es 版本号
../bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.0/elasticsearch-analysis-ik-7.12.0.zip
3.重启 elasticsearch 容器
docker restart 容器ID
4.常见问题
(1)java.lang.IllegalStateException
执行elasticsearch-plugin install
的时候,出现了 Failed installing
和java.lang.IllegalStateException
查看了一下,我的 plugins/ 目录下已经有一个名为 ik 的文件夹了.
抱着试试的心态,删掉了这个名为 ik 的文件夹,重新执行
../bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.0/elasticsearch-analysis-ik-7.12.0.zip
安装成功
二、ik 分词原理
(占位,等有时间读源码再来补充)
三、ik_smart 和 ik_max_word
GET _analyze?pretty
{
"analyzer": "ik_smart",
"text": "不像我,只会心疼鸽鸽"
}
GET _analyze?pretty
{
"analyzer": "ik_max_word",
"text": "不像我,只会心疼鸽鸽"
}
结论
- _analyzer构建索引时候的分词,索引的时候使用 max_word
- search_analyzer搜索时的分词,查询的时候使用 smart