简介
es默认的分词器只支持英文,对于中文只能按单字分词;
ik是一款中文的分词插件,支持自定义词库。
ik下载安装
https://github.com/medcl/elasticsearch-analysis-ik/releases
win环境
下载后,创建目录,如D:\data\docker\elasticsearch\plugins,将下载的zip包解压到il目录下。目录结构如下
重启Elasticsearch 和Kibana
linux环境
在线下载,
cd /usr/local/elasticsearch/plugins/
在elasticsearch安装目录的plugins目录下新建ik目录
mkdir analysis-ik && cd analysis-ik
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.4.1/elasticsearch-analysis-ik-8.4.1.zip
unzip elasticsearch-analysis-ik-8.4.1.zip -d /usr/local/elasticsearch/plugins/analysis-ik/
rm -rf elasticsearch-analysis-ik-8.4.1.zip
chmod -R 777 analysis-ik/
重启Elasticsearch 和Kibana
docker restart elasticsearch
docker restart kibana
docker容器
- https://github.com/medcl/elasticsearch-analysis-ik/releases 查看合适版本
- 进入 elasticsearch 容器 (需要替换掉下面的版本号)
docker exec -it elasticsearch /bin/bash
如果在线下载安装失败,可手工下载安装包后,将包装包上传到dokcer容器对应的目录后,再解压手工安装./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.4.1/elasticsearch-analysis-ik-8.4.1.zip
cd /usr/local/elasticsearch/plugins/
mkdir analysis-ik && cd analysis-ik
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
unzip elasticsearch-analysis-ik-8.4.1.zip -d /usr/local/elasticsearch/plugins/analysis-ik/
rm -rf elasticsearch-analysis-ik-8.4.1.zip
重启Elasticsearch 和Kibana。chmod -R 777 analysis-ik/
docker restart elasticsearch
docker restart kibana
配置
ik测试
post 请求 /_analyze
GET _analyze
GET _analyze
{
"analyzer":"ik_smart",
"text":"2018年5月全球编程语言排行榜"
}
使用介绍
ik_max_word分词模式
ik_max_word: 会将文本做最细粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,中华人民,中华,华人,人民共和国,人民,人,民,共和国,共和,和,国国,国歌”,会穷尽各种可能的组合,适合 Term Query;
ik_smart 分词模式
ik_smart: 会做最粗粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,国歌”,适合 Phrase 查询。
扩展词典使用
扩展词:就是不想让哪些词被分开,让他们分成一个词。比如上面的江大桥
自定义扩展词库
进入到 config/analysis-ik/(插件命令安装方式) 或 plugins/analysis-ik/config(安装包安装方式) 目录 下,
cd /usr/local/elasticsearch/plugins/analysis-ik/config
新增自定义词典
vim lagou_ext_dict.dic
输入需要自定义扩展的词典,保存。
接着,将我们自定义的扩展词典文件添加到IKAnalyzer.cfg.xml配置中
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典 -->
<entry key="ext_dict">lagou_ext_dict.dic</entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords">lagou_stop_dict.dic</entry>
<!--用户可以在这里配置远程扩展字典 -->
<!-- <entry key="remote_ext_dict">http://192.168.211.130:8080/tag.dic</entry> -->
<!--用户可以在这里配置远程扩展停止词字典-->
<!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>
重启Elasticsearch