ElasticSearch汇总请查看:ElasticSearch教程——汇总篇
简介
IK Analyzer是一个开源的,基于Java语言开发的轻量级的中文分词工具包,最初的时候,它是以开源项目Lucene为应用主体的,结合词典分词和文法分析算法的中文分词组件,从3.0版本之后,IK逐渐成为面向java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现,IK实现了简单的分词 歧义排除算法,标志着IK分词器从单纯的词典分词向模拟语义分词衍化
基础环境
1.基础环境建立在前两篇博客的基础之上,这边IK的版本务必要和elasticsearch一致,否则会报错
2.安装maven
下载
git clone https://github.com/medcl/elasticsearch-analysis-ik.git
下载方式有两种,一种是直接用git命令下载,另一种是在windows上下载好后上传到服务器上再进行解压
打包编译
按照上述方式下载好后,将项目进行打包
执行如下脚本(需要先按照maven,此处不再赘述,网上相关博文很多):
mvn package
编译完成之后切换路径到项目下的target/releases,找到对应zip包,我这边是elasticsearch-analysis-ik-6.4.0.zip。
将该zip文件拷贝至/usr/elasticsearch/elasticsearch-6.4.0/plugins/ik(此处ik文件夹是自己创建的)下,并进行解压
unzip elasticsearch-analysis-ik-6.4.0.zip
重启ElasticSearch
systemctl restart elasticsearch.service
测试IK分词器
ik 带有两个分词器
ik_max_word :会将文本做最细粒度的拆分;尽可能多的拆分出词语
ik_smart:会做最粗粒度的拆分;已被分出的词语将不会再次被其它词语占有
更多具体内容可以看官方案例:官方测试案例
注意:在新版本中需要在请求头中设置请求格式,否则会报错,错误为
"error" : "Content-Type header [application/x-www-form-urlencoded] is not supported"
另外新版本中已经不支持String了,用text代替,输入String会报下错误
org.elasticsearch.index.mapper.MapperParsingException: No handler for type [string] declared on field [content]
at org.elasticsearch.index.mapper.ObjectMapper$TypeParser.parseProperties(ObjectMapper.java:274) ~[elasticsearch-6.4.0.jar:6.4.0]
at org.elasticsearch.index.mapper.ObjectMapper$TypeParser.parseObjectOrDocumentTypeProperties(ObjectMapper.java:199) ~[elasticsearch-6.4.0.jar:6.4.0]
at org.elasticsearch.index.mapper.RootObjectMapper$TypeParser.parse(RootObjectMapper.java:131) ~[elasticsearch-6.4.0.jar:6.4.0]
at org.elasticsearch.index.mapper.DocumentMapperParser.parse(DocumentMapperParser.java:112) ~[elasticsearch-6.4.0.jar:6.4.0]
at org.elas