29.ElasticSearch使用ik分词器
我们先体验一下自带的分词器Standard
我们发现有点扯淡,一个字一个字的分,实际上我们预期的是:”中国“,”银行“,”中国银行“,”软件“,”中心“,”软件中心“这样的,所以对于中文我们需要额外安装我们自己的分词器来识别中文词语,我们一般使用ik分词器。
安装ik分词器
github的地址: https://github.com/medcl/elasticsearch-analysis-ik/releases?after=v6.4.2
根据ES的版本来安装的,先看一下我们的ES是哪个版本:
那我们就安装7.4.2版本的ik分词器:
右键点击标红的地方,选择复制链接地址,就拿到了这个zip的下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.4.2/elasticsearch-analysis-ik-7.4.2.zip
进入es容器内部的plugins目录,实际上并不需要,因为我们的es做了外部映射,映射到了如下这个目录:
进入plugins目录,创建一个ik文件夹: mkdir ik
进入ik文件夹, cd ik ,执行命令: wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.4.2/elasticsearch-analysis-ik-7.4.2.zip
下载完成后解压zip文件: unzip elasticsearch-analysis-ik-7.4.2.zip
删除安装包: rm elasticsearch-analysis-ik-7.4.2.zip
设置ik的文件夹权限为可读可写可执行: chmod -R 777 ik/
怎么看ik分词器是否安装成功呢
查一下elasticsearch的容器ID:
进入容器的elasticsearch的内部: docker exec -it c5d /bin/bash
输入命令: pwd
进入到plugins: cd plugins/ 可以看到里面也有我们在容器外部解压的ik文件夹映射过来
进入到elasticsearch的bin目录看一下可执行命令:
看到了有 elasticsearch-plugin ,可以试一下: elasticsearch-plugin list
这就说明安装成功了,安装成功后需要重启服务,退出容器(exit命令),重启服务:
测试ik分词器
打开kinaba发现遇到报错:
我们查一下kinaba的日志: docker logs d33
这就是ES的容量不够导致的熔断,导致Kibana连接ES连接不上,解决办法就是改大es的容内存容量
docker修改es容器的内存
# 先停止docker容器,再停止docker服务,停止docker服务命令如下 systemctl stop docker service docker stop # 找到容器的配置文件存储目录,此目录下是容器启动时的配置文件所在目录 cd /var/lib/docker/containers/
#进入es这个容器ID的文件夹
cd xxx/ # 修改配置文件config.v2.json vim config.v2.json
修改最大内存:
修改后再启动服务启动容器:
# 启动docker服务
systemctl start docker
# 启动docker服务
service docker start
再打开Kibana就OK了。