Elasticsearch中文分词

未分词的情况:

1.插入测试数据

POST /news/text/1
{"content":"美国留给伊拉克的是个烂摊子吗"}

POST /news/text/2
{"content":"公安部:各地校车将享最高路权"}

POST /news/text/3
{"content":"中韩渔警冲突调查:韩警平均每天扣1艘中国渔船"}

POST /news/text/4
{"content":"中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首"}

 

2.检测

POST /newnew/_search
{
"query" : { "match" : { "content" : "中国" }},
"highlight" : {
"pre_tags" : ["<tag1>", "<tag2>"],
"post_tags" : ["</tag1>", "</tag2>"],
"fields" : {
"content" : {}
}
}
}

 

  • 从下图可知未进行中文分词会出现分开匹配单个字符,不会把“中国”当成字符串来匹配

 

Elasticsearch中文分词

分词配置
注意!如果是ES集群,所有的节点都要安装,所有的节点安装完毕之后都要重启

 

1.配置中文分词器

 

cd /usr/share/Elasticsearch
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.6.0/elasticsearch-analysis-ik-6.6.0.zip

 

2.重启所有ES节点

 

systemctl restart elasticsearch

 

3.创建索引(未配置中文分词之前,是按照英文分词格式,所以再配置中文分词之后需要创建新索引)

 

PUT /news

 

4.创建模板

 

POST /news/text/_mapping
{
"properties": {
"content": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_smart"
}
}

}

 

5.插入测试数据

 

POST /news/text/1
{"content":"美国留给伊拉克的是个烂摊子吗"}

POST /news/text/2
{"content":"公安部:各地校车将享最高路权"}

POST /news/text/3
{"content":"中韩渔警冲突调查:韩警平均每天扣1艘中国渔船"}

POST /news/text/4
{"content":"中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首"}

 

6.再次查询数据发现已经能识别中文了

 

POST /news/_search
{
"query" : { "match" : { "content" : "中国" }},
"highlight" : {
"pre_tags" : ["<tag1>", "<tag2>"],
"post_tags" : ["</tag1>", "</tag2>"],
"fields" : {
"content" : {}
}
}
}

 

验证结果如下图

 

Elasticsearch中文分词

 

赞赏

微信赞赏支付宝赞赏

Linux基础

查看Linux服务器物理CPU个数,核数,逻辑CPU个数

2020-1-11 10:55:55

ELK

Elasticsearch的备份与恢复

2019-12-4 12:17:11

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索