一、ES安装IK分词插件
- 基于docker容器的方式启动ES实例
启动脚本如下:
docker run -d -p9200:9200 -p9300:9300 -e "discovery.type=single-node" -v /opt/docker/es/plugins:/usr/share/elasticsearch/plugins/ -e ES_JAVA_OPTS="-Xms120m -Xmx120m" --name es01 elasticsearch:7.7.0
将容器的/usr/share/elasticsearch/plugins/目录挂载到虚拟机的/opt/docker/es/plugins目录。
- 根据ES的版本下载对应的IK分词器
IK分词器github地址
解压后上传到虚拟机的/opt/docker/es/plugins目录
chomd -R 777 ik #修改一些ik文件夹对应的权限
由于是具名挂载的,此时容器中的plugins目录也有了ik文件夹
- 重启ES实例
docker restart 容器ID
- 测试
- it_max_word测试
- ik_smart
二、ES使用自定义词库
有些网络流行新词,ES并不能准确识别例如下面的测试,如果是人为分词,最想要分为乔碧罗、电商、带货,这么三个词,此时就需要用自定义词库。
- 启动一个nginx实例,将/etc/nginx下的配置挂载到容器外部
docker container cp nginx:/etc/nginx .
- 关闭刚才启动的nginx,再次启动一个nginx实例,将配置挂载到刚才的目录
docker run -d -p 6000:80 --name nginx -v /opt/docker/nginx/html:/usr/share/nginx/html -v /opt/docker/nginx/logs:/var/log/nginx -v /opt/docker/nginx/conf:/etc/nginx nginx
- 进入/opt/docker/nginx/html目录,创建words目录,创建words.txt文件,输入要分词的内容
-
本机测试
-
修改es外部挂载的plugins目录下的IK分词配置
-
重启容器再次测试
docker restart 容器ID