在线安装ik插件(较慢)
docker exec -it es /bin/bash
./bin/es-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.1/elasticsearch-analysis-ik-7.12.1.zip
看到报错了,我访问一下。就是没有了
# 要是上面是安装成功的,后面还要在执行下面的命令。
#退出
exit#重启容器
docker restart elasticsearch
离线安装ik插件
查看数据卷目录
安装插件需要知道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 es
# 查看es日志
docker logs -f es
测试
IK分词器包含两种模式:
ik_smart
:最少切分ik_max_word
:最细切分
GET /_analyze
{"analyzer": "ik_max_word","text": "现在学习Java真是太好啦"
}
结果
{"tokens" : [{"token" : "现在","start_offset" : 0,"end_offset" : 2,"type" : "CN_WORD","position" : 0},{"token" : "在学","start_offset" : 1,"end_offset" : 3,"type" : "CN_WORD","position" : 1},{"token" : "学习","start_offset" : 2,"end_offset" : 4,"type" : "CN_WORD","position" : 2},{"token" : "java","start_offset" : 4,"end_offset" : 8,"type" : "ENGLISH","position" : 3},{"token" : "真是太","start_offset" : 8,"end_offset" : 11,"type" : "CN_WORD","position" : 4},{"token" : "真是","start_offset" : 8,"end_offset" : 10,"type" : "CN_WORD","position" : 5},{"token" : "太好","start_offset" : 10,"end_offset" : 12,"type" : "CN_WORD","position" : 6},{"token" : "好啦","start_offset" : 11,"end_offset" : 13,"type" : "CN_WORD","position" : 7}]
}
扩展词典
随着互联网的发展,“造词运动”也越发的频繁。出现了很多新的词语,在原有的词汇列表中并不存在。比如:“奥力给”,“泰酷辣” 等。
所以我们的词汇也需要不断的更新,IK分词器提供了扩展词汇的功能。
1、打开ik分词器config目录
2、在IKAnalyzer.cfg.xml配置文件内容添加
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties><comment>IK Analyzer 扩展配置</comment><!--用户可以在这里配置自己的扩展字典 --><entry key="ext_dict">ext.dic</entry><!--用户可以在这里配置自己的扩展停止词字典--><entry key="ext_stopwords"></entry><!--用户可以在这里配置远程扩展字典 --><!-- <entry key="remote_ext_dict">words_location</entry> --><!--用户可以在这里配置远程扩展停止词字典--><!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>
3、新建一个 ext.dic,可以参考config目录下复制一个配置文件进行修改
vim ext.dic
奥力给
泰酷辣
4、重启elasticsearch
docker restart es# 查看日志
docker logs -f es
日志中已经成功加载 ext.dic 配置文件
5、测试效果
GET /_analyze
{"analyzer": "ik_max_word","text": "现在学习Java真是太好啦 奥力给"
}
注意当前文件的编码必须是 UTF-8 格式,严禁使用Windows记事本编辑
停用词 词典
在互联网项目中,在网络间传输的速度很快,所以很多语言是不允许在网络上传递的,如:关于宗教、政治等敏感词语,那么我们在搜索时也应该忽略当前词汇。
IK分词器也提供了强大的停用词功能,让我们在索引时就直接忽略当前的停用词汇表中的内容。
1、IKAnalyzer.cfg.xml配置文件内容添加
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties><comment>IK Analyzer 扩展配置</comment><!--用户可以在这里配置自己的扩展字典 --><entry key="ext_dict">ext.dic</entry><!--用户可以在这里配置自己的扩展停止词字典--><entry key="ext_stopwords">stopword.dic</entry><!--用户可以在这里配置远程扩展字典 --><!-- <entry key="remote_ext_dict">words_location</entry> --><!--用户可以在这里配置远程扩展停止词字典--><!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>
# 新建停用词 文件
vim stopword.dic
sde 是我添加的停用词
4、重启es服务
# 重启服务
docker restart elasticsearch
docker restart kibana# 查看 日志
docker logs -f elasticsearch
5、测试效果
GET /_analyze
{"analyzer": "ik_max_word","text": "现在学习Java真是太好啦 奥力给 sde"
}
注意当前文件的编码必须是 UTF-8 格式,严禁使用Windows记事本编辑