Elasticsearch 安装插件 IK Analyzer

简介

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": "",
      "position": 0
    },
    {
      "token": "中",
      "start_offset": 6,
      "end_offset": 7,
      "type": "",
      "position": 1
    },
    {
      "token": "国",
      "start_offset": 7,
      "end_offset": 8,
      "type": "",
      "position": 2
    },
    {
      "token": "人",
      "start_offset": 8,
      "end_offset": 9,
      "type": "",
      "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"
  • 下载 IK分词插件
    https://github.com/medcl/elasticsearch-analysis-ik

注意,必须要下载当前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

测试安装是否成功

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

你可能感兴趣的:(Elasticsearch 安装插件 IK Analyzer)