十二、ES分词器

一、ES分词介绍

我们使用搜索引搜索我们想要查询的内容时,ES数据库会对我们输入的内容进行分词,再按分词的评分进行排序,优先显示评分高的内容。

如在某宝搜索双飞燕蓝牙无线鼠标,某宝的搜索引擎就可能会将该内容分为双飞燕蓝牙无线鼠标,并将评分高的结果优先显示。

如上图,双飞燕就跟无线蓝牙鼠标分开了,这就是分词

因为默认的ES分词器对中文支持不是很好,这里需要使用elasticsearch-analysis-ik插件来对中文进行分词。

二、使用分词插件

1、使用前提

  • 所有es节点都需要安装插件
  • 安装完后需要重启服务
  • 插件版本要和es版本号对应

环境介绍

主机名 服务 IP
es01 es+kibana 10.154.0.110
es02 es 10.154.0.111
es03 es 10.154.0.112

1、下载安装

下载地址:github下载

我的ES使用的是7.9.3的版本,建议使用离线安装,将安装包下载下来,再上传到服务器中。

#在线安装
/usr/share/elasticsearch/bin/elasticsearch-plugin install \
https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v7.9.3/elasticsearch-analysis-ik-7.9.3.zip

#离线安装
/usr/share/elasticsearch/bin/elasticsearch-plugin install \
file:///opt/elasticsearch-analysis-ik-7.9.3.zip

传到其他es服务器

#这里的es02,es03是在/etc/hosts文件配置的域名
scp elasticsearch-analysis-ik-7.9.3.zip es02:/opt
scp elasticsearch-analysis-ik-7.9.3.zip es03:/opt

重启所有节点

systemctl restart elasticsearch

2、使用插件

创建一个名为china的索引,并指定分词器

右边的红色字体警告,告诉我们有一个参数即将过时,可以忽略该警告
analyzer:创建索引使用的分词器
search_analyzer:查询时使用的分词器

参考资料:analyzer和search_analyzer的区别

插入测试数据

搜索有关中国的关键词

3、使用字典

有时候我们对中文分词效果不满意,可以自己写词库或者更新词库

安装nginx

yum -y install nginx
systemctl enable nginx
systemctl start nginx

编辑字典文件

vim /usr/share/nginx/html/zh_dic.txt
中国
知名品牌
双飞燕无线鼠标
蓝牙鼠标
无线鼠标

保证能访问

配置到es的中文分词器插件配置文件中

vim /etc/elasticsearch/analysis-ik/IKAnalyzer.cfg.xml

编辑第10行,修改为字典路径

将改好的IK配置文件复制到其他节点

scp -p /etc/elasticsearch/analysis-ik/IKAnalyzer.cfg.xml es02:/etc/elasticsearch/analysis-ik/IKAnalyzer.cfg.xml
scp -p /etc/elasticsearch/analysis-ik/IKAnalyzer.cfg.xml es03:/etc/elasticsearch/analysis-ik/IKAnalyzer.cfg.xml

重启所有节点

systemctl restart elasticsearch

#边重启边查看es01的集群日志会发现字典已被加载
tail -f /var/log/elasticsearch/tz_linux_es.log 

如果用的是xshell,点击工具>发送键输入到所有会话,即可将当前会话输入的命令输入到所有会话中,非常好用

启动es01的kibana

systemctl start kibana

进入kibana的控制台,创建china索引,插入测试数据,搜索双飞燕,这里创建索引没有指定分词器,会用es默认的分词器。

可以发现双飞燕这个词被一个字一个字分开了,es的默认分词器对中文不是很友好,会将搜索词分成一个字一个字的。

创建一个china2索引,指定中文分词器插件,插入测试数据,搜索双飞燕

可以发现双飞燕被完整的分开,这就是自建字典的分词效果,以后需要更新字典,直接编辑字典即可,非常方便。

PS,双飞燕看见了请付一下广告费谢谢!哈哈

参考资料
老男孩教育_day105_视频

posted @ 2021-09-04 16:53  努力吧阿团  阅读(1515)  评论(0编辑  收藏  举报