简介

es默认的分词器只支持英文,对于中文只能按单字分词;
ik是一款中文的分词插件,支持自定义词库。

ik下载安装

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

win环境

下载后,创建目录,如D:\data\docker\elasticsearch\plugins,将下载的zip包解压到il目录下。目录结构如下
1664766796548.png
重启Elasticsearch 和Kibana

linux环境

在线下载,

  1. cd /usr/local/elasticsearch/plugins/

在elasticsearch安装目录的plugins目录下新建ik目录

  1. mkdir analysis-ik && cd analysis-ik
  1. wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.4.1/elasticsearch-analysis-ik-8.4.1.zip
  1. unzip elasticsearch-analysis-ik-8.4.1.zip -d /usr/local/elasticsearch/plugins/analysis-ik/
  1. rm -rf elasticsearch-analysis-ik-8.4.1.zip
  1. chmod -R 777 analysis-ik/

重启Elasticsearch 和Kibana

  1. docker restart elasticsearch
  2. docker restart kibana

docker容器

  1. https://github.com/medcl/elasticsearch-analysis-ik/releases 查看合适版本
  2. 进入 elasticsearch 容器 (需要替换掉下面的版本号)
    1. docker exec -it elasticsearch /bin/bash
    1. ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.4.1/elasticsearch-analysis-ik-8.4.1.zip
    如果在线下载安装失败,可手工下载安装包后,将包装包上传到dokcer容器对应的目录后,再解压手工安装
    1. cd /usr/local/elasticsearch/plugins/
    1. mkdir analysis-ik && cd analysis-ik
    1. docker cp F:/project/elasticsearch/elasticsearch-analysis-ik-8.4.1.zip elasticsearch:/usr/local/elasticsearch/plugins/analysis-ik/elasticsearch-analysis-ik-8.4.1.zip
    1. unzip elasticsearch-analysis-ik-8.4.1.zip -d /usr/local/elasticsearch/plugins/analysis-ik/
    1. rm -rf elasticsearch-analysis-ik-8.4.1.zip
    1. chmod -R 777 analysis-ik/
    重启Elasticsearch 和Kibana。
    1. docker restart elasticsearch
    2. docker restart kibana

    配置

ik测试

post 请求 /_analyze

GET _analyze

  1. GET _analyze
  2. {
  3. "analyzer":"ik_smart",
  4. "text":"2018年5月全球编程语言排行榜"
  5. }

使用介绍

ik_max_word分词模式

ik_max_word: 会将文本做最细粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,中华人民,中华,华人,人民共和国,人民,人,民,共和国,共和,和,国国,国歌”,会穷尽各种可能的组合,适合 Term Query;

ik_smart 分词模式

ik_smart: 会做最粗粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,国歌”,适合 Phrase 查询。

扩展词典使用

扩展词:就是不想让哪些词被分开,让他们分成一个词。比如上面的江大桥

自定义扩展词库

进入到 config/analysis-ik/(插件命令安装方式) 或 plugins/analysis-ik/config(安装包安装方式) 目录 下,

  1. cd /usr/local/elasticsearch/plugins/analysis-ik/cong

新增自定义词典

  1. vim lagou_ext_dict.dic

输入需要自定义扩展的词典,保存。
接着,将我们自定义的扩展词典文件添加到IKAnalyzer.cfg.xml配置中

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
  3. <properties>
  4. <comment>IK Analyzer 扩展配置</comment>
  5. <!--用户可以在这里配置自己的扩展字典 -->
  6. <entry key="ext_dict">lagou_ext_dict.dic</entry>
  7. <!--用户可以在这里配置自己的扩展停止词字典-->
  8. <entry key="ext_stopwords">lagou_stop_dict.dic</entry>
  9. <!--用户可以在这里配置远程扩展字典 -->
  10. <!-- <entry key="remote_ext_dict">http://192.168.211.130:8080/tag.dic</entry> -->
  11. <!--用户可以在这里配置远程扩展停止词字典-->
  12. <!-- <entry key="remote_ext_stopwords">words_location</entry> -->
  13. </properties>

重启Elasticsearch