1、安装mvn
wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
yum -y install apache-maven
2、下载版本,注意ik版本要和elasticsearch版本配套
现场es版本2.1.0,配套ik版本为1.6.0
下载ik版本(源码)
wget https://github.com/medcl/elasticsearch-analysis-ik/archive/v1.6.0.zip
3、使用mvn编译安装
mvn clean
mvn compile
mvn package
4、编译完成后,把target/releases/elasticsearch-analysis-ik-1.6.0.zip文件解压
unzip target/releases/elasticsearch-analysis-ik-1.6.0.zip
把5个jar(commons-codec-1.9.jar,commons-logging-1.2.jar,elasticsearch-analysis-ik-1.6.0.jar,httpclient-4.4.1.jar,httpcore-4.4.1.jar)包复制es的lib/目录下
cp target/releases/*.jar $ES_HOME/lib/
把plugin-descriptor.properties到es的plugins/ik目录下
cp target/releases/plugin-descriptor.properties $ES_HOME/plugins/ik
5、将解压目录文件中config/ik文件夹(字典库)复制到ES安装目录config文件夹下。
cp config/ik $ES_HOME/config/
6、配置IK,在elasticsearch配置文件中添加ik分词类别
vi $ES_HOME/config/elasticsearch.yml
在文件最后添加如下:
index.analysis.analyzer.ik.type : "ik"
7、重启elasticSearch
8、验证分词安装
在浏览器中输入: http://192.168.1.100:9200/_analyze?analyzer=ik&pretty=true&text=我是中国人
查看分词效果
{
"tokens" : [ {
"token" : "我",
"start_offset" : 0,
"end_offset" : 1,
"type" : "CN_CHAR",
"position" : 0
}, {
"token" : "中国人",
"start_offset" : 2,
"end_offset" : 5,
"type" : "CN_WORD",
"position" : 1
}, {
"token" : "中国",
"start_offset" : 2,
"end_offset" : 4,
"type" : "CN_WORD",
"position" : 2
}, {
"token" : "国人",
"start_offset" : 3,
"end_offset" : 5,
"type" : "CN_WORD",
"position" : 3
} ]
}
在浏览器中输入: http://192.168.1.100:9200/_analyze?analyzer=ik&pretty=true&text=sojson在线工具
{
"tokens" : [ {
"token" : "sojson",
"start_offset" : 0,
"end_offset" : 6,
"type" : "ENGLISH",
"position" : 0
}, {
"token" : "在线",
"start_offset" : 6,
"end_offset" : 8,
"type" : "CN_WORD",
"position" : 1
}, {
"token" : "工具",
"start_offset" : 8,
"end_offset" : 10,
"type" : "CN_WORD",
"position" : 2
} ]
}
获取以上结果,表示IK安装成功。
下面为索引创建全文检索。
创建索引
curl -XPUT http://192.168.1.100:9200/index
配置映射
curl -XPOST http://192.168.1.100:9200/index/fulltext/_mapping -d'
{
"fulltext": {
"_all": {
"analyzer": "ik_max_word",
"search_analyzer": "ik_max_word",
"term_vector": "no",
"store": "false"
},
"properties": {
"content": {
"type": "string",
"store": "no",
"term_vector": "with_positions_offsets",
"analyzer": "ik_max_word",
"search_analyzer": "ik_max_word",
"include_in_all": "true",
"boost": 8
}
}
}
}'
添加索引文档
curl -XPOST http://192.168.1.100:9200/index/fulltext/1 -d'
{"content":"美国留给伊拉克的是个烂摊子吗"}
'
curl -XPOST http://192.168.1.100:9200/index/fulltext/2 -d'
{"content":"公安部:各地校车将享最高路权"}
'
curl -XPOST http://192.168.1.100:9200/index/fulltext/3 -d'
{"content":"中韩渔警冲突调查:韩警平均每天扣1艘中国渔船"}
'
curl -XPOST http://192.168.1.100:9200/index/fulltext/4 -d'
{"content":"中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首"}
'
curl -XPOST http://192.168.1.100:9200/index/fulltext/5 -d'
{"content":"陈云飞是一个好同学"}
'
curl -XPOST http://192.168.1.100:9200/index/fulltext/6 -d'
{"content":"白云飞是一个好同学"}
'
curl -XPOST http://192.168.1.100:9200/index/fulltext/7 -d'
{"content":"董元福是一个好同学"}
'
高亮查询
curl -XPOST http://192.168.1.100:9200/index/fulltext/_search -d'
{
"query" : { "term" : { "content" : "中国" }},
"highlight" : {
"pre_tags" : ["", ""],
"post_tags" : ["", ""],
"fields" : {
"content" : {}
}
}
}
'
词库更新
在192.168.1.101上面已经建立了远程词库位置在/var/www/html下面 名字是sougou.dic
如果搜索的时候没匹配到词,可以往sougou.dic尾部添加词,添加后elasticsearch会动态加载词库。
添加方法:在 192.168.1.101机器上,使用root用户执行以下命令:
#echo "动态加载" /var/www/html/sougou.dic
更新词库后,再往elasticsearch对应的index里添加数据,会使用新词库进行分词。
常见问题
问题1:"analyzer [ik_max_word] not found for field [content]"
解决办法:在所有es节点安装IK后,问题解决。
问题2:"failed to find analyzer [ik]"
解决办法:在es配置文件elasticsearch.yml的最后添加如下后问题解决:
index.analysis.analyzer.ik.type : "ik"