Elasticsearch本身对中文的分词支持不是很好,可以通过安装elasticsearch的ik分词器插件elasticsearch-analysis-ik来实现中文分词。
一、下载安装篇
方法一:
从官方网站下载, 告诉你,可以下载源码,然后自己去编译,这样比较麻烦,可以直接它的版本库中下载编译好的历史版本
方法二:
下载elasticsearch-analysis-ik-v1.9.5编译包,注意要下载编译好的包,而不是源码包。
例如:得到压缩包 elasticsearch-analysis-ik-1.9.5.zip
进入elasticsearch
的plugins
目录,解压,重命名 analysis-ik
,然后将 analysis-ik/config
整个目录文件拷贝到 elasticsearch-2.3.5/config/ik/
下面 , 如果elasticsearch-2.3.5/config
下面没有ik目录,需要新建ik目录。
相关命令:
unzip elasticsearch-analysis-ik-1.9.5.zip -d ./analysis-ik/
-d参数,解压到指定目录
cp -rf analysis-ik/config/ ../config/ik/
-rf参数,复制文档到指定目录
进入 elasticsearch-2.3.5/bin
重启elasticsearch服务
二、验证ik分词案例
- create index (创建索引(创建库))
curl -XPUT http://localhost:9200/index
- create a mapping (创建映射(表设计))
curl -XPOST http://localhost: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
}
}
}
}'
- index some docs (插入数据内容)
curl -XPOST http://localhost:9200/index/fulltext/1 -d'
{"content":"美国留给伊拉克的是个烂摊子吗"}
'
curl -XPOST http://localhost:9200/index/fulltext/2 -d'
{"content":"公安部:各地校车将享最高路权"}
'
curl -XPOST http://localhost:9200/index/fulltext/3 -d'
{"content":"中韩渔警冲突调查:韩警平均每天扣1艘中国渔船"}
'
curl -XPOST http://localhost:9200/index/fulltext/4 -d'
{"content":"中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首"}
'
- query with highlighting(高亮查询)
curl -XPOST http://localhost:9200/index/fulltext/_search -d'
{
"query" : { "term" : { "content" : "中国" }},
"highlight" : {
"pre_tags" : ["<tag1>", "<tag2>"],
"post_tags" : ["</tag1>", "</tag2>"],
"fields" : {
"content" : {}
}
}
}
'
Result(结果)
{
"took": 6,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 2,
"max_score": 1.5,
"hits": [
{
"_index": "index",
"_type": "fulltext",
"_id": "4",
"_score": 1.5,
"_source": {
"content": "中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首"
},
"highlight": {
"content": [
"<tag1>中国</tag1>驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首"
]
}
},
{
"_index": "index",
"_type": "fulltext",
"_id": "3",
"_score": 0.53699243,
"_source": {
"content": "中韩渔警冲突调查:韩警平均每天扣1艘中国渔船"
},
"highlight": {
"content": [
"中韩渔警冲突调查:韩警平均每天扣1艘<tag1>中国</tag1>渔船"
]
}
}
]
}
}
至此,我们的ik分词器就可以告一段落了,剩下就是继续探索!!!
热词更新配置:
待研究
参考文档:Elasticsearch 中文分词器 IK 配置和使用