一、ES中文分词插件(es-ik)

在中文数据检索场景中,为了提供更好的检索效果,需要在ES中集成中文分词器,因为ES默认是按照英文的分词规则进行分词的,基本上可以认为是单字分词,对中文分词效果不理想。

ES之前是没有提供中文分词器的,现在官方也提供了一些,但是在中文分词领域,IK分词器是不可撼动的,所以在这里我们主要讲一下如何在ES中集成IK这个中文分词器。

1、下载

首先下载es-ik插件,需要到github上下载。

https://github.com/medcl/elasticsearch-analysis-ik



最终的下载地址为:

https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.13.4/elasticsearch-analysis-ik-7.13.4.zip

百度网盘地址:

链接:https://pan.baidu.com/s/1KgBGetSvLpIUPtDz5fUM5Q?pwd=eh35
提取码:eh35

注意:在ES中安装IK插件的时候,需要在ES集群的所有节点中都安装。

2、上传

将下载好的elasticsearch-analysis-ik-7.13.4.zip上传到bigdata01的/data/soft/ elasticsearch-7.13.4目录中。

[root@bigdata01 elasticsearch-7.13.4]# ll elasticsearch-analysis-ik-7.13.4.zip
-rw-r--r--. 1 root root 4504502 Sep  3  2021 elasticsearch-analysis-ik-7.13.4.zip

3、远程拷贝到其他节点

将elasticsearch-analysis-ik-7.13.4.zip远程拷贝到bigdata02和bigdata03上。

[root@bigdata01 elasticsearch-7.13.4]# scp -rq elasticsearch-analysis-ik-7.13.4.zip  bigdata02:/data/soft/elasticsearch-7.13.4
[root@bigdata01 elasticsearch-7.13.4]# scp -rq elasticsearch-analysis-ik-7.13.4.zip  bigdata03:/data/soft/elasticsearch-7.13.4

4、安装

在bigdata01节点离线安装IK插件。

[root@bigdata01 elasticsearch-7.13.4]# bin/elasticsearch-plugin install file:///data/soft/elasticsearch-7.13.4/elasticsearch-analysis-ik-7.13.4.zip

注意:在安装的过程中会有警告信息提示需要输入y确认继续向下执行。

[=================================================] 100%
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@     WARNING: plugin requires additional permissions     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
* java.net.SocketPermission * connect,resolve
See http://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html
for descriptions of what these permissions allow and the associated risks.Continue with installation? [y/N]y

最后看到如下内容就表示安装成功了。

-> Installed analysis-ik
-> Please restart Elasticsearch to activate any plugins installed

注意:插件安装成功之后在elasticsearch-7.13.4的config和plugins目录下会产生一个analysis-ik目录。

config目录下面的analysis-ik里面存储的是ik的配置文件信息。

[root@bigdata01 elasticsearch-7.13.4]# cd config/
[root@bigdata01 config]# ll analysis-ik/
total 8260
-rwxrwxrwx. 1 root root 5225922 Feb 27 20:57 extra_main.dic
-rwxrwxrwx. 1 root root   63188 Feb 27 20:57 extra_single_word.dic
-rwxrwxrwx. 1 root root   63188 Feb 27 20:57 extra_single_word_full.dic
-rwxrwxrwx. 1 root root   10855 Feb 27 20:57 extra_single_word_low_freq.dic
-rwxrwxrwx. 1 root root     156 Feb 27 20:57 extra_stopword.dic
-rwxrwxrwx. 1 root root     625 Feb 27 20:57 IKAnalyzer.cfg.xml
-rwxrwxrwx. 1 root root 3058510 Feb 27 20:57 main.dic
-rwxrwxrwx. 1 root root     123 Feb 27 20:57 preposition.dic
-rwxrwxrwx. 1 root root    1824 Feb 27 20:57 quantifier.dic
-rwxrwxrwx. 1 root root     164 Feb 27 20:57 stopword.dic
-rwxrwxrwx. 1 root root     192 Feb 27 20:57 suffix.dic
-rwxrwxrwx. 1 root root     752 Feb 27 20:57 surname.dic

plugins目录下面的analysis-ik里面存储的是ik的核心jar包。

[root@bigdata01 elasticsearch-7.13.4]# cd plugins/
[root@bigdata01 plugins]# ll analysis-ik/
total 1428
-rwxrwxrwx. 1 root root 263965 Feb 27 20:56 commons-codec-1.9.jar
-rwxrwxrwx. 1 root root  61829 Feb 27 20:56 commons-logging-1.2.jar
-rwxrwxrwx. 1 root root  54626 Feb 27 20:56 elasticsearch-analysis-ik-7.13.4.jar
-rwxrwxrwx. 1 root root 736658 Feb 27 20:56 httpclient-4.5.2.jar
-rwxrwxrwx. 1 root root 326724 Feb 27 20:56 httpcore-4.4.4.jar
-rwxrwxrwx. 1 root root   1807 Feb 27 20:56 plugin-descriptor.properties
-rwxrwxrwx. 1 root root    125 Feb 27 20:56 plugin-security.policy

5、在bigdata02节点离线安装IK插件

[root@bigdata02 elasticsearch-7.13.4]# bin/elasticsearch-plugin install file:///data/soft/elasticsearch-7.13.4/elasticsearch-analysis-ik-7.13.4.zip

6、在bigdata03节点离线安装IK插件

[root@bigdata03 elasticsearch-7.13.4]# bin/elasticsearch-plugin install file:///data/soft/elasticsearch-7.13.4/elasticsearch-analysis-ik-7.13.4.zip

7、如果集群正在运行,则需要停止集群

在bigdata01上停止。

[root@bigdata01 elasticsearch-7.13.4]# jps
1680 Elasticsearch
2047 Jps
[root@bigdata01 elasticsearch-7.13.4]# kill 1680

在bigdata02上停止。

[root@bigdata02 elasticsearch-7.13.4]# jps
1682 Elasticsearch
1866 Jps
[root@bigdata02 elasticsearch-7.13.4]# kill 1682

在bigdata03上停止。

[root@bigdata03 elasticsearch-7.13.4]# jps
1683 Elasticsearch
1803 Jps
[root@bigdata03 elasticsearch-7.13.4]# kill 1683

8、修改目录权限

修改elasticsearch-7.13.4的plugins目录下analysis-ik子目录的权限
直接修改elasticsearch-7.13.4目录的权限即可。

在bigdata01上执行。

[root@bigdata01 elasticsearch-7.13.4]# cd ..
[root@bigdata01 soft]# chmod -R 777 elasticsearch-7.13.4

在bigdata02上执行。

[root@bigdata02 elasticsearch-7.13.4]# cd ..
[root@bigdata02 soft]# chmod -R 777 elasticsearch-7.13.4

在bigdata03上执行。

[root@bigdata03 elasticsearch-7.13.4]# cd ..
[root@bigdata03 soft]# chmod -R 777 elasticsearch-7.13.4

9、重新启动ES集群

在bigdata01上执行。

[root@bigdata01 soft]# su es
[es@bigdata01 soft]$ cd /data/soft/elasticsearch-7.13.4
[es@bigdata01 elasticsearch-7.13.4]$ bin/elasticsearch -d

在bigdata02上执行。

[root@bigdata02 soft]# su es
[es@bigdata02 soft]$ cd /data/soft/elasticsearch-7.13.4
[es@bigdata02 elasticsearch-7.13.4]$ bin/elasticsearch -d

在bigdata03上执行。

[root@bigdata03 soft]# su es
[es@bigdata03 soft]$ cd /data/soft/elasticsearch-7.13.4
[es@bigdata03 elasticsearch-7.13.4]$ bin/elasticsearch -d

10、验证IK的分词效果

首先使用默认分词器测试中文分词效果。

[root@bigdata01 soft]# curl -H "Content-Type: application/json" -XPOST  'http://bigdata01:9200/emp/_analyze?pretty' -d '{"text":"我们是中国人"}'
{"tokens" : [{"token" : "我","start_offset" : 0,"end_offset" : 1,"type" : "<IDEOGRAPHIC>","position" : 0},{"token" : "们","start_offset" : 1,"end_offset" : 2,"type" : "<IDEOGRAPHIC>","position" : 1},{"token" : "是","start_offset" : 2,"end_offset" : 3,"type" : "<IDEOGRAPHIC>","position" : 2},{"token" : "中","start_offset" : 3,"end_offset" : 4,"type" : "<IDEOGRAPHIC>","position" : 3},{"token" : "国","start_offset" : 4,"end_offset" : 5,"type" : "<IDEOGRAPHIC>","position" : 4},{"token" : "人","start_offset" : 5,"end_offset" : 6,"type" : "<IDEOGRAPHIC>","position" : 5}]
}

然后使用IK分词器测试中文分词效果。

[root@bigdata01 soft]# curl -H "Content-Type: application/json" -XPOST  'http://bigdata01:9200/emp/_analyze?pretty' -d '{"text":"我们是中国人","tokenizer":"ik_max_word"}'
{"tokens" : [{"token" : "我们","start_offset" : 0,"end_offset" : 2,"type" : "CN_WORD","position" : 0},{"token" : "是","start_offset" : 2,"end_offset" : 3,"type" : "CN_CHAR","position" : 1},{"token" : "中国人","start_offset" : 3,"end_offset" : 6,"type" : "CN_WORD","position" : 2},{"token" : "中国","start_offset" : 3,"end_offset" : 5,"type" : "CN_WORD","position" : 3},{"token" : "国人","start_offset" : 4,"end_offset" : 6,"type" : "CN_WORD","position" : 4}]
}

在这里我们发现分出来的单词里面有一个 是,这个单词其实可以认为是一个停用词,在分词的时候是不需要切分出来的。
在这被切分出来了,那也就意味着在进行停用词过滤的时候没有过滤掉。

针对ik这个词库而言,它的停用词词库里面都有哪些单词呢?

[root@bigdata01 elasticsearch-7.13.4]# cd config/analysis-ik/
[root@bigdata01 analysis-ik]# ll
total 8260
-rwxrwxrwx. 1 root root 5225922 Feb 27 20:57 extra_main.dic
-rwxrwxrwx. 1 root root   63188 Feb 27 20:57 extra_single_word.dic
-rwxrwxrwx. 1 root root   63188 Feb 27 20:57 extra_single_word_full.dic
-rwxrwxrwx. 1 root root   10855 Feb 27 20:57 extra_single_word_low_freq.dic
-rwxrwxrwx. 1 root root     156 Feb 27 20:57 extra_stopword.dic
-rwxrwxrwx. 1 root root     625 Feb 27 20:57 IKAnalyzer.cfg.xml
-rwxrwxrwx. 1 root root 3058510 Feb 27 20:57 main.dic
-rwxrwxrwx. 1 root root     123 Feb 27 20:57 preposition.dic
-rwxrwxrwx. 1 root root    1824 Feb 27 20:57 quantifier.dic
-rwxrwxrwx. 1 root root     164 Feb 27 20:57 stopword.dic
-rwxrwxrwx. 1 root root     192 Feb 27 20:57 suffix.dic
-rwxrwxrwx. 1 root root     752 Feb 27 20:57 surname.dic
[root@bigdata01 analysis-ik]# more stopword.dic
a
an
and
are
as
at
be
but
by
for
if
in
into
is
it
no
not
of
on
or

ik的停用词词库是stopword.dic这个文件,这个文件里面目前都是一些英文停用词。
我们可以手工在这个文件中把中文停用词添加进去,先添加 是 这个停用词。

[root@bigdata01 analysis-ik]# vi stopword.dic
.....
是

然后把这个文件的改动同步到集群中的所有节点上。

[root@bigdata01 analysis-ik]# scp -rq stopword.dic bigdata02:/data/soft/elasticsearch-7.13.4/config/analysis-ik/
[root@bigdata01 analysis-ik]# scp -rq stopword.dic bigdata03:/data/soft/elasticsearch-7.13.4/config/analysis-ik/

重启集群让配置生效。
先停止bigdata01、bigdata02、bigdata03上的ES服务。

[root@bigdata01 analysis-ik]# jps
3051 Elasticsearch
3358 Jps
[root@bigdata01 analysis-ik]# kill 3051[root@bigdata02 analysis-ik]$ jps
2496 Elasticsearch
2570 Jps
[root@bigdata02 analysis-ik]$ kill 2496[root@bigdata03 analysis-ik]$ jps
2481 Jps
2412 Elasticsearch
[root@bigdata03 analysis-ik]$ kill 2412

启动bigdata01、bigdata02、bigdata03上的ES服务。

[es@bigdata01 elasticsearch-7.13.4]$ bin/elasticsearch -d[es@bigdata02 elasticsearch-7.13.4]$ bin/elasticsearch -d[es@bigdata03 elasticsearch-7.13.4]$ bin/elasticsearch -d

再使用IK分词器测试一下中文分词效果。

[root@bigdata01 analysis-ik]# curl -H "Content-Type: application/json" -XPOST  'http://bigdata01:9200/test/_analyze?pretty' -d '{"text":"我们是中国人","tokenizer":"ik_max_word"}'
{"tokens" : [{"token" : "我们","start_offset" : 0,"end_offset" : 2,"type" : "CN_WORD","position" : 0},{"token" : "中国人","start_offset" : 3,"end_offset" : 6,"type" : "CN_WORD","position" : 1},{"token" : "中国","start_offset" : 3,"end_offset" : 5,"type" : "CN_WORD","position" : 2},{"token" : "国人","start_offset" : 4,"end_offset" : 6,"type" : "CN_WORD","position" : 3}]
}

此时再查看会发现没有"是" 这个单词了,相当于在过滤停用词的时候把它过滤掉了。

Elasticsearch07:ES中文分词插件(es-ik)安装部署相关推荐

  1. 基于 HanLP 的 ES 中文分词插件

    一.分词插件 1.分词器概念 在 ES 中,分词器的作用是从文本中提取出若干词元(token)来支持索引的存储和搜索,分词器(Analyzer)由一个分解器(Tokenizer).零个或多个词元过滤器 ...

  2. Elasticsearch学习笔记(三)安装hanlp中文分词插件及同义词配置

    目录 hanlp分词插件 插件安装 在线安装 离线安装 安装数据包 同义词配置 hanlp分词插件 HanLP是一款免费开源(Apache License 2.0协议)中文语义分词工具,它提供中文分词 ...

  3. ELK系列(十)、ES中文分词器IK插件安装和配置远程词库热加载

    简介 IK Analyzer是一个开源的,基于Java语言开发的轻量级的中文分词工具包: 最初,它是以开源项目Luence 为应用主体的,结合词典分词和文法分析算法的中文分词组件:从 3.0 版本开始 ...

  4. elasticsearch6.2.2安装中文分词插件IK analyzer

    elasticsearch6.2.2安装中文分词插件IK analyzer 哎,装了一下午的ik终于装上了,发现自己真的是非常笨了,并且es重启过程中遇到了很多的问题,下面我将手把手教大家如何安装ik ...

  5. Elasticsearch(一)——Es安装(三个必安工具、安装各种类型分词器)、Es 十大核心概念、通过 Kibana 操作 Es(中文分词、Es各种索引命令操作)

    Elasticsearch(一)--Es安装(三个必安工具.安装各种类型分词器).Es 十大核心概念.通过 Kibana 操作 Es(中文分词.Es各种索引命令操作) 一.Elasticsearch ...

  6. elasticsearch5安装和elasticsearch-analysis-ik中文分词插件安装

    ElasticSearch简介 Elastic有一条完整的产品线及解决方案:Elasticsearch.Kibana.Logstash等,前面说的三个就是大家常说的ELK技术栈. Elasticsea ...

  7. php es中文分词,Elasticsearch搜索中文分词优化

    Elasticsearch 中文搜索时遇到几个问题: 当搜索关键词如:"人民币"时,如果分词将"人民币"分成"人","民" ...

  8. php es 短语精确搜索,ES中文分词器之精确短语匹配(解决了match_phrase匹配不全的问题)...

    分词器选择 调研了几种分词器,例如IK分词器,ansj分词器,mmseg分词器,发现IK的分词效果最好.举个例子: 词:<>哈撒多撒ئۇيغۇر تىلى王者荣耀sdsd@4342啊啊啊 ...

  9. 基于 Ansj 的 elasticsearch 2.3.1 中文分词插件

    前言 这是一个elasticsearch的中文分词插件,基于Ansj中文分词.发起者Onni大神. 2.3.1插件安装 进入Elasticsearch目录运行如下命令 进入es目录执行如下命令 ./b ...

最新文章

  1. 轻松破解NewzCrawler时间限制
  2. GraPhlAn绘制的超高颜值物种树Cladogram
  3. GTX 1080Ti + cuda8.0 + cuDNN6.0 安装及测试
  4. router6 QoS 1 基础知识
  5. 动态调用WebService
  6. Zzz读书心得:英文论文写作不求人
  7. python中文本文件r_Python如何读写文本文件
  8. bzoj 3528: [Zjoi2014]星系调查
  9. 怎样用 Python 控制图片人物动起来?一文就能 Get!
  10. 使用RouteDebugger对MVC路由进行调试
  11. WebAPI——cookie与session遇到的问题
  12. python自动处理多个txt文件_怎么用python去实现几个文件中内容的并行处理
  13. mac硬盘空间怎么清理?这样也能清理出上10G的磁盘空间
  14. 【语音加密】基于matlab GUI语音信号加密解密【含Matlab源码 295期】
  15. 文件服务器定时开关机,云服务器定时开关机
  16. vb计算机教程,《计算机级VB教程》PPT课件.ppt
  17. 在命令行cmd 下,输入dxdiag 查看关于电脑许多硬件的详细信息
  18. 假如某人年薪100万,如何分配月发和年终奖会使其纳税金额最少
  19. 2005国内IC Design House一览
  20. 微信小程序云开发云数据库_聚合操作_联表查询_对象数组某字段与另一集合的某字段相等匹配

热门文章

  1. BZOJ2144跳跳棋——LCA+二分
  2. vue实现轮播图完整版,锁定图片元素纵横比
  3. 【强烈推荐】【超强去水印神器】支持给图片视频一键去除/添加水印!
  4. Html中使用jquery通过Ajax请求WebService接口以及跨域问题解决
  5. .net xml ajax 注册 ashx,AJAX.NET安装配置全指南
  6. 基于6G的联邦学习部署和应用
  7. 「Linux」这些结构目录休想唬我
  8. 关于新创公司所需的icp,网文,软著和备案的申请
  9. 新房装修时别随便拆墙,防止结构受损
  10. 毛哥的快乐生活(20) 使用Servlet打造多版本通知网站