侧边栏壁纸
博主头像
孔子说JAVA博主等级

成功只是一只沦落在鸡窝里的鹰,成功永远属于自信且有毅力的人!

  • 累计撰写 352 篇文章
  • 累计创建 135 个标签
  • 累计收到 10 条评论

目 录CONTENT

文章目录

ES教程12-ElasticSearch中文分词器IK的安装与使用播报文章

孔子说JAVA
2022-10-17 / 0 评论 / 0 点赞 / 77 阅读 / 2,766 字 / 正在检测是否收录...
广告 广告

elasticsearch提供了几个内置的分词器:standard analyzer(标准分词器)、simple analyzer(简单分词器)、whitespace analyzer(空格分词器)、language analyzer(语言分词器),而如果我们不指定分词器类型的话,elasticsearch默认是使用标准分词器(是英文分词),该分词器在处理中文的时候会将中文分词为单个汉字。所以我们需要下载中文分词插件 elasticsearch-analysis-ik,来实现中文分词。

1、下载IK分词插件

1.1 与Es版本对应关系

在使用IK分词插件时,需要注意 IK 的版本号必须和 Elasticsearch 的版本相互对应,不然会出现 IK 和 ES不兼容的问题,导致 IK 安装后 elasticsearch 无法启动。具体的版本对应问题,可以参考官网:elasticsearch和IK版本关系

image-1665708897933

下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases ,提供了各个 elasticsearch-analysis-ik 插件版本,按照我们安装的ES版本选择对应版本下载即可。例如说 Elasticsearch 版本是 7.17.3 ,所以需要使用 elasticsearch-analysis-ik-v7.17.3 。

1.2 下载 IK

到官网找对对应的 IK 版本下载,如我们这里选择的是下载 elasticsearch-analysis-ik-7.17.3,下载地址:elasticsearch-analysis-ik-7.17.3.zip

image-1665709387420

注意:IK要与Elasticsearch版本相对应

我的服务器是linux,直接用wget命令下载到服务器的插件安装目录。

wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.17.3/elasticsearch-analysis-ik-7.17.3.zip

image-1665709697165

2、安装 IK

2.1 离线安装方式

2.1.1 解压

上一步中我将IK插件的压缩包下载在 /home/es/plugin 目录下,现在需要解压到 ElasticSearch 安装目录的 plugins/ik 目录下。

# 解压ik压缩包到 ElasticSearch 安装目录的 plugins/ik 目录下

unzip elasticsearch-analysis-ik-7.17.3.zip -d /home/es/es/elasticsearch-7.17.3/plugins/ik/

image-1665710468629

2.1.2 重启

查找 ES 进程,并关闭它

# 查找 ES 进程
ps -ef | grep elastic

# 我们找到的 ES 进程号为 5005 , 关闭它
$ kill 5005

# 启动 ES 进程(需要使用es用户)
$ bin/elasticsearch -d

image-1665710864739

2.1.3 查看日志

$ cat logs/elasticsearch.log 

如果成功启动,则我们已经安装了ES及ik分词插件。

2.2 命令行安装方式

命令行安装: bin/elasticsearch-plugin install [plugin_name]

# bin/elasticsearch-plugin install analysis-smartcn  安装中文分词器

2.3 url安装方式

url安装命令: bin/elasticsearch-plugin install [url]

# bin/elasticsearch-plugin install https://artifacts.elastic.co/downloads/elasticsearch-plugins/analysis-smartcn/analysis-smartcn-6.4.0.zip

3、IK分词器使用

通过实例来比较 ES自带分词器 及 IK 分词器区别,使用 Kibana 工具,访问地址:http://172.19.82.206:5601/app/dev_tools#/console

3.1 自带分词器

  • standard:英文大写转小写,按空格分词,中文按单个字分词。
POST _analyze
{
  "analyzer": "standard",
  "text":     "Like X 国庆放假的"
}

image-1665713465354

  • simple:中英文都先按空格分词,英文大写转小写,不是英文不再分词。
POST _analyze
{
  "analyzer": "simple",
  "text":     "I Like X 国庆放假 的"
}

image-1665713540827

  • whitespace:中英文都按空格分词,且英文不区分大小写。
POST _analyze
{
  "analyzer": "whitespace",
  "text":     "I Like 国庆放假 哈"
}

image-1665713591898

分词器的设置

settings中标准分析器接受下列参数:

  1. max_token_length : 最大token长度,默认255。
  2. stopwords : 预定义的停止词列表,如_english_ 或包含停止词列表的数组,默认是 none
  3. stopwords_path : 包含停止词的文件路径。
#设置分词器为standard,设置分词最大为5,设置过滤词
PUT new_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_english_analyzer": {
          "type": "standard",       
          "max_token_length": 5,    
          "stopwords": "_english_"  
        }
      }
    }
  }
}

3.2 IK分词器

IK有两种颗粒度的拆分:ik_smart(会做最粗粒度的拆分),ik_max_word(会将文本做最细粒度的拆分)。

  • ik_smart 拆分: 会做最粗粒度的拆分,分的词少。
GET /_analyze
{
  "text":"中华人民共和国国徽",
  "analyzer":"ik_smart"
}
  • ik_max_word 拆分: 会将文本做最细粒度的拆分,分的词多。
GET /_analyze
{
  "text":"I love china,中华人民共和国国徽",
  "analyzer":"ik_max_word"
}
0

评论区