本文主要是介绍elasticsearch 安装 ik中文分词器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1,下载ik分词器,根据自己es的版本下载对应的版本
下载地址:
https://github.com/medcl/elasticsearch-analysis-ik
我这里是使用的6.2.1版本,直接下载就可以了
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.2.1/elasticsearch-analysis-ik-6.2.1.zip
zip包里面的文件结构如下:
备注:
如果是下载的其他版本可能没有上面结构图的包,这个时候需要先解压压缩包,进入文件目录,然后本地在使用mvn命令打个包即可,打包命令(如果没有安装maven的请自行百度安装):
mvn package
打包完成后在 \target\releases 目录下就能够看到相同的文件结构了
config文件夹里面的内容是分词器分词时读取文件的主要目录,大概说说里面的各文件内容
- IKAnalyzer.cfg.xml:用来配置自定义词库
- main.dic:ik原生内置的中文词库,总共有27万多条,只要是这些单词,都会被分在一起
- quantifier.dic:放了一些单位相关的词
- suffix.dic:放了一些后缀
- surname.dic:中国的姓氏
- stopword.dic:英文停用词
ik原生最重要的两个配置文件
- main.dic:包含了原生的中文词语,会按照这个里面的词语去分词
- stopword.dic:包含了英文的停用词
2,解压 elasticsearch-analysis-ik-6.2.1.zip
unzip elasticsearch-analysis-ik-6.2.1.zip
便于区分修改解压后的文件夹名称为 elasticsearch-analysis-ik-6.2.1
mv elasticsearch elasticsearch-analysis-ik-6.2.1
3,将解压后的文件夹移动到es的plugins目录下
mv elasticsearch-analysis-ik-6.2.1 /usr/local/elasticsearch-6.2.1/plugins/
4,重启es
5,ik 分词器测试
假如我们直接使用 standard 对中文进行分词看看有什么效果,执行如下语句
{"text": "string是基本数据类型吗","analyzer": "standard"
}
结果:
很明显,被分成了一个个单一的词,显然这并不是我们想要的效果,因为单个词汇在文档搜索中意义并不大
安装了中文分词器后,我们再来做如下测试,运行如下语句,指定ik分词器:
{"text": "string是基本数据类型吗","analyzer": "ik_max_word"
}
结果:
这时候IK分词器将我们的一段句子拆分成了不同长度的词汇,看起来合理多了
最后在使用ik分词器搜索一下数据,看看是不是想要的结果
可以看到这个时候就已经按照问我们想要的分词结果查询出来了数据,到此,大功告成
es各个搜索条件含义:
match 搜索key会被分词,搜索的filed中的值是分了词,然后再匹配
term 精确匹配输入的参数(不使用分析器)
wildcard 没用过
prefix 前缀匹配
fuzzy 模糊匹配
range 范围匹配 匹配数值类型,比如说对于用户样本搜索,年龄范围在20~30之间的,就用range。
query_string 查询text类型的字段
text 文本类型,文本类型可以设置分词器属性
missing 是否存在该字段值 和exists反义
这篇关于elasticsearch 安装 ik中文分词器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!