欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Elasticsearch 安装插件 IK Analyzer

程序员文章站 2022-07-04 23:48:25
...

简介

Elasticsearch自带standard分词法,但是这个分词法对英文支持不错,对中文支持却很差,我们可以试验一下,直接在head插件中使用复合查询,或者你也可以直接浏览器访问

http://xxx.xxx.xxx.xxx:9200/_analyze?analyzer=standard&pretty=true&text=hello 中国人
{
  "tokens": [
    {
      "token": "hello",
      "start_offset": 0,
      "end_offset": 5,
      "type": "<ALPHANUM>",
      "position": 0
    },
    {
      "token": "中",
      "start_offset": 6,
      "end_offset": 7,
      "type": "<IDEOGRAPHIC>",
      "position": 1
    },
    {
      "token": "国",
      "start_offset": 7,
      "end_offset": 8,
      "type": "<IDEOGRAPHIC>",
      "position": 2
    },
    {
      "token": "人",
      "start_offset": 8,
      "end_offset": 9,
      "type": "<IDEOGRAPHIC>",
      "position": 3
    }
  ]
}

结果可以看到,中文的都被解析成了一个个的单字

  • 如果安装了IK 的分词器会是什么样的效果呢?(先给大家看下效果)
http://xxx.xxx.xxx.xxx:9200/_analyze?analyzer=ik_max_word&pretty=true&text=hello 中国人
{
  "tokens": [
    {
      "token": "hello",
      "start_offset": 0,
      "end_offset": 5,
      "type": "ENGLISH",
      "position": 0
    },
    {
      "token": "中国人",
      "start_offset": 6,
      "end_offset": 9,
      "type": "CN_WORD",
      "position": 1
    },
    {
      "token": "中国",
      "start_offset": 6,
      "end_offset": 8,
      "type": "CN_WORD",
      "position": 2
    },
    {
      "token": "国人",
      "start_offset": 7,
      "end_offset": 9,
      "type": "CN_WORD",
      "position": 3
    }
  ]
}

结果可以看到,中文按照一定的语义进行了拆分,这就是语义分词

安装

  • IK需要使用maven来编译,所以先要安装maven,配置maven的yum源
wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
  • 安装maven
yum install apache-maven 
  • 检测maven是否安装成功
 mvn -version
Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T15:58:13+08:00)
Maven home: /usr/share/apache-maven
Java version: 1.8.0_181, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-693.21.1.el7.x86_64", arch: "amd64", family: "unix"

注意,必须要下载当前Elasticsearch所对应的IK版本,具体的对应关系github的页面里面有说明

  • 如果不记得当前安装Elasticsearch 的版本号,可以查询
http://xxx.xxx.xxx.xxx:9200
{
  "name": "Cancer",
  "cluster_name": "elasticsearch",
  "cluster_uuid": "ji3aSaT4TAKuRO34a4twnQ",
  "version": {
    "number": "2.4.6",
    "build_hash": "5376dca9f70f3abef96a77f4bb22720ace8240fd",
    "build_timestamp": "2017-07-18T12:17:44Z",
    "build_snapshot": false,
    "lucene_version": "5.5.4"
  },
  "tagline": "You Know, for Search"
}

可以看出当前Elasticsearch的版本是 2.4.6 ,然后根据上面github地址中的说明,下载对应 1.10.6 版本的IK插件elasticsearch-analysis-ik-1.10.6.zip,我是放在 /usr/local/src 目录下的

  • 解压下载包,并在解压后的文件下执行mvn package,直到打包完成
cd /usr/local/src
unzip elasticsearch-analysis-ik-1.10.6.zip
cd elasticsearch-analysis-ik-1.10.6
mvn package

然后就是漫长的等待了,感觉有十几分钟吧

  • 打包完成之后,开始安装插件
  1. 当前目录下,进入target\releases 文件夹,里面打包生成了压缩包elasticsearch-analysis-ik-1.10.6.zip,解压之。
  2. 在Elasticsearch的插件目录/usr/share/elasticsearch/plugins下,新建文件夹ik
  3. 复制上面解压后的文件到 文件夹ik中
  • 重启下Elasticsearch
systemctl restart elasticsearch

测试安装是否成功

  • 按照文章开头的方法测试下中文分词的效果