Elasticsearch的IK中文分词器安装与使用,就是这么简单

前言

我们知道当我们存储一个文档到elasticsearch,elasticsearch会使用分词器从文档中取出若干词元来支持索引的存储和搜索。elasticsearch内置了很多分词器,但内置的分词器对中文的处理不好,只会一个字一个字的分,无法形成词语。所以我们还需要安装一个中文分词插件。而最常用的中文分词器就是IK分词器,所以下面就简单介绍一下IK分词器的安装与使用


安装

ES提供了一个脚本elasticsearch-plugin(windows下为elasticsearch-plugin.bat)来安装插件,脚本位于ES安装目录的bin目录下。elasticsearch-plugin脚本可以有三种命令,靠参数区分:

1、 elasticsearch-plugin install 插件地址
install 参数指定的命令是安装指定的插件到当前ES节点中。

2、 elasticsearch-plugin list
list参数指定的命令是显示当前ES节点已经安装的插件列表。

3、 elasticsearch-plugin remove 插件名称
remove 参数指定的命令是删除已安装的插件。

插件地址我们可以使用远程的地址,也可以将插件下载到本地,然后使用本地的文件地址

注:使用本地文件地址,需要带file:///协议头
如:

linux:
elasticsearch-plugin  install file:///home/elasticsearch/elasticsearch-analysis-ik-x.x.x.zip

windows:
elasticsearch-plugin.bat install file:///E:/elasticsearch/elasticsearch-analysis-ik-x.x.x.zip

IK分词器的版本和下载地址在以下地址

链接: https://github.com/medcl/elasticsearch-analysis-ik/releases
.

注:分词器版本需要与你安装的elasticsearch版本一致

安装中文分词插件,在elasticsearch的bin目录下执行以下命令,我的ES版本为6.2.2,所以分词器的版本也是6.2.2

elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.2.2/elasticsearch-analysis-ik-6.2.2.zip

安装完成后,输入elasticsearch-plugin list指令,如果安装成功,则会显示插件名称,如下

E:\soft\elasticsearch-6.2.2\bin>elasticsearch-plugin list
analysis-ik

安装成功后,我们重新启动一下我们的Elasticsearch,以便这个plugin能被成功加载。


使用IK分词器

ik插件为我们提供了两个分词器,分别是ik_max_word 和ik_smart

我们可以使用_analyze方法来看一下分词器的效果

使用方式为:

发送以下post请求

http://localhost:9200/_analyze
{  
    "analyzer": "ik_max_word",
    "text": "我们能做得更好,也应该做得更好"  
}

analyzer:用来指定使用的分词器
text:需要进行分词的文本

然后我们的输入就会被分词器分成一个一个的小部分词语
在这里插入图片描述

两个分词器的比较:

我比较了一下这两个分词器的分词结果,发现ik_max_word比ik_smart得到的中文分词更多,这可能也是这两个分词器名称的由来

ik_max_word对中文的支持更全面,但是存储上的开销也较大。ik_smart既能满足英文分词的要求,也能满足正常的中文分词需求,且较智能和轻量,占用存储也较小,如果不是对中文分词要求比较严格,推荐使用ik_smart。

_analyze只适用于测试的时候,真实使用应该在我们创建文档或者索引时在mapping中定义使用的分词器

例:

PUT /my_index/_mapping/my_type
{
    "my_type": {
        "properties": {
            "title": {
                "type":     "text",
                "analyzer": "ik_max_word",
                "search_analyzer": "ik_smart"
            }
        }
    }
}

分词器主要有两种情况会被使用:

第一种是插入文档时,将text类型的字段做分词然后插入倒排索引,

第二种就是在查询时,先对要查询的text类型的输入做分词,再去倒排索引搜索

如果想要让 索引 和 查询 时使用不同的分词器,ElasticSearch也是能支持的,只需要在字段上加上search_analyzer参数

在索引时,只会去看字段有没有定义analyzer,有定义的话就用定义的,没定义就用ES预设的

在查询时,会先去看字段有没有定义search_analyzer,如果没有定义,就去看有没有analyzer,再没有定义,才会去使用ES预设的

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值