es(Elasticsearch)安装使用(03ik分词器安装篇)

背景

什么是分词

把文本转换为一个个的单词,分词称之为analysis。es默认只对英文语句做分词,中文不支持,每个中文字都会被拆分为独立的个体。

es 内置分词

  • standard:默认分词,单词会被拆分,大小会转换为小写。

  • simple:按照非字母分词。大写转为小写。

  • whitespace:按照空格分词。忽略大小写。

  • stop:去除无意义单词,比如the/a/an/is…

  • keyword:不做分词。把整个文本作为一个单独的关键词

文章推荐

es(Elasticsearch)安装使用(01es安装篇)_少年ing的博客-CSDN博客

es(Elasticsearch)客户端Kibana安装使用(02Kibana安装篇)_少年ing的博客-CSDN博客

es(Elasticsearch)安装使用(03ik分词器安装篇)_少年ing的博客-CSDN博客

es(Elasticsearch)客户端Elasticsearch-head安装使用(04Elasticsearch-head安装篇)_少年ing的博客-CSDN博客

版本声明

CenOS:7.5阿里云服务器 关闭防火墙
JDK:1.8;
Elasticsearch:7.6.1;
Kibana:7.6.1;
IK:7.6.1;

1、ik下载地址     

注意和 要和es版本对应

Releases · medcl/elasticsearch-analysis-ik · GitHub

某网盘

链接:https://pan.baidu.com/s/1-ADPvSk9wt0cjPAMP9nYKw
提取码:k3yn

2.安装

2.1 使用 es用户 在es安装目录plugins下 创建ik目录

su es   切换es用户

mkdir ik

 

 2.2 将下载ik压缩包上传ik目录 并解压到该目录  解压后 删除压缩包负责启动有问题

cd  /usr/local/elasticsearch-7.6.1/plugins/ik

unzip elasticsearch-analysis-ik-7.6.1.zip

若报  bash: unzip: command not found

安装下 unzip

yum install -y unzip zip

 2.3重启Elasticsearch

在es 的bin目录先查询PID,然后杀死进程:

ps -ef | grep elasticsearch

启动es

cd  /usr/local/elasticsearch-7.6.1/bin

./elasticsearch -d

启动ES之后,ES会自己加载IK插件,如果启动ES成功,说明IK安装成功: 

重启Kibana

ES重启之后,ES的客户端Kibana也应该重启

1、root用户或者es用户都可以

2、cd /usr/local/elasticsearch-7.6.1/kibana-7.6.1-linux-x86_64/bin

3、./kibana -d

2、测试分词效果

#默认
POST _analyze
{
  "analyzer": "standard",
  "text": "我是中国人"
}
#ik  ik_smart 最少切分算法
POST _analyze
{
    "analyzer":"ik_smart",
    "text":"我是中国人"
}

#ik  ik_max_word 最细粒度切分算法
POST _analyze
{
    "analyzer":"ik_max_word",
    "text":"我是中国人"
}

 

 

 3、指定IK分词器作为默认分词器
ES的默认分词设置是standard,这个在中文分词时就比较尴尬了,会单字拆分,比如我搜索关键词“清华大学”,这时候会按“清”,“华”,“大”,“学”去分词,然后搜出来的都是些“清清的河水”,“中华儿女”,“地大物博”,“学而不思则罔”之类的莫名其妙的结果,这里我们就想把这个分词方式修改一下,于是呢,就想到了ik分词器,有两种ik_smart和ik_max_word。
ik_smart会将“清华大学”整个分为一个词,而ik_max_word会将“清华大学”分为“清华大学”,“清华”和“大学”,按需选其中之一就可以了。
修改默认分词方法(这里修改school_index索引的默认分词为:ik_max_word):
 

PUT school_index
{
"settings" : {
"index" : {
"analysis.analyzer.default.type": "ik_max_word"
}
}
}

首先,咱们还是得分析出现此问题的原因

前边也说了,其分词是基于自身的一个词典 进行分词的,出现此情况原因在于 ‘我是’ 这个词,我们的词典没有,所以不会吧这几个字切分为词,

那么我们是不是可以根据一些业务场景自定义词典呢?

答案是:当然可以!


IK 分词器 自定义词典

进入咱们的es plugins 下 进入ik分词器 目录,发现其配置文件中 ,说明了用户是可以自定义词典的!
cd

/usr/local/elasticsearch-7.6.1/plugins/ik/config

 

那么我们按着此模式,也新建一个词典 随意取名.dic

例如我定义一个词典 my.dic 在其中输入我业务场景所用的 我的

1. touch my.dic

2.  vim my.dic  

   输入  我的 

保存

在修改我们的配置文件 加入我们的自定义词典

vim IKAnalyzer.cfg.xml

 重启es

测试

参考

CentOS7下安装ElasticSearch7.6.1详细教程(单机、集群搭建)_@来杯咖啡的博客-CSDN博客_centos7安装elasticsearch

ElasticSearch分词器IK安装教程_@来杯咖啡的博客-CSDN博客_elasticsearch ik分词安装

Elasticsearch (ES) 学习之路(三) IK 分词器安装与使用自定义词典_保护我方胖虎的博客-CSDN博客_es 自定义词典

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值