ElasticSearch集成IK分词器

1、 解决ElasticSearch集成IK分词器报ES_JAVA_HOME不匹配问题:

原因:ES7运行时会报错,提示ES_JAVA_HOME不匹配之类的,这是Elasticsearch在7之后的版本内置了JDK,而内置的JDK是当前推荐的JDK版本。当然如果你本地配置了JAVA_HOME那么ES就是优先使用配置的JDK启动ES,我们日常的代码开发都是使用的JDK1.8,所以这里不会把JAVA_HOME配置成JDK11,我们只需更改Elasticsearch的启动文件,使它指向我们下载的JDK11。首先在我们elasticsearch-env最末尾添加如下代码。

#配置自己的jdk11
export JAVA_HOME=D:elasticsearch-7.15.2-windows-x86_64elasticsearch-7.15.2jdk
export PATH=$JAVA_HOMEin:$PATH


#添加jdk判断
if [ -x "$JAVA_HOME/bin/java" ]; then
        JAVA="D:elasticsearch-7.15.2-windows-x86_64elasticsearch-7.15.2jdkinjava"
else
        JAVA=`which java`
fi

启动成功如下:在这里插入图片描述
访问成功:在这里插入图片描述

2. 为什么使用IK分词器:

自带ES默认标准分词器
ES默认自带的分析器,是标准分词器,针对英文好使,但是针对中文,只能把汉字一个个拆分,不符合中文插叙需求。

我们测试下标准分词器,看看标准分词器如何处理 “今天天气真好” 这个字符串:在这里插入图片描述由此图片可以看出ES自带默认分词器针对中文分词并不理想,所以我们需要IK分词器,换而言之针对中文我们需要使用到IK分词器。

3. IK分词器

IKAnalyzer是一个开源的,基于java开发的轻量级的中文分词工具包。ES默认没有携带IK分词器,需要下载,下载地址(PS:根据ES版本下载压缩包,并解压缩到ES的plugins文件夹下,请下载第一个ZIP):
https://github.com/medcl/elasticsearch-analysis-ik/releases

下载安装:
1.下载IK压缩包,本文使用ES是7.15.2,下载的IK也是7.15.2;
2.解压放到es安装目录中的plugin目录中,解压缩完毕后可以把压缩包删除或移除。
3.重启es即可

测试效果

IK分词器,支持两种算法。分别为:

ik_smart :最少切分

ik_max_word :最细粒度切分

下面看效果,还是测试 “今天天气真好” 这个字符串。

1.ik_smart
在这里插入图片描述
2.ik_max_word

在这里插入图片描述
结果对比,ik_max_word与ik_smart分词对比,ik_max_word分的更为详细、更多一些

自定义词库

我们分词“今天天气真好”这个字符串,结果如下
在这里插入图片描述
我们想要将“今天天气真好”为一个完整的词,但是结果并没有,这个时候需要我们去词库添加这个词

1.在es的插件目录中,我们添加了IK分词器,在分词器目录下,有个config目录,

pluginselasticsearch-analysis-ik-7.15.2config

在congif中,添加一个mydic.dic的文件,名字随意,后缀为dic;

2.在mydic.dic文件中添加词汇:
在这里插入图片描述
3.保存后,修改在elasticsearch-analysis-ik-7.15.2/config目录的IKAnalyzer.cfg.xml文,内容:
在这里插入图片描述4.重启es;如果是es集群,每个节点都需要改;

测试下:

ik_smart:

在这里插入图片描述
ik_max_word:
在这里插入图片描述
现在分词都有“今天天气真好”这个词了,这里就介绍IK分词器到这里,如有其他问题欢迎讨论,如有问题还望指正,验证后,必会修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值