Elasticsearch中文分词+全文搜索demo

中文分词+全文搜索

本文假设你已经搭建好elasticsearch服务器,并在上面装了kibana和IK中文分词组件

elasticsearch+kibana+ik的安装,之前的文章有介绍,可参考。

mapping介绍:定义索引(index)类型(type)的元数据,包括:数据类型、分词行为、建立倒排索引行为、搜索行为等。在搜索的时候会根据这个mapping定义的分词行为、搜索行为进行搜索。

1、创建索引

1 PUT news

 2、创建mapping

 1 POST news/new/_mapping
 2 {
 3     "new": 
 4     {
 5         "properties": 
 6         {
 7             "title":
 8             {
 9                 "type": "text",
10                 "fields": {
11                     "keyword": 
12                     {
13                         "type": "keyword",
14                         "ignore_above": 256
15                     }
16                 }
17             },
18             "content": 
19             {
20                 "type": "text",
21                 "analyzer": "ik_max_word",
22                 "search_analyzer": "ik_max_word"
23             }
24         }
25     }
26 }

有两个字段:title和content

3、插入数据

1 PUT news/new/1
2 {
3   "title":"印度将因4大矛盾惨败中国 1项曾使印度国母被杀",
4   "content":"一大堆最近中国和阿三闹矛盾词语,此处省略N字。。。"
5 }
1 PUT news/new/2
2 {
3   "title":"印度不要敬酒不吃吃罚酒满嘴跑火车 想想1962年",
4   "content":"一大堆最近中国和阿三闹矛盾词语,此处省略N字。。。" 
5 }
1 PUT news/new/3
2 {
3   "title":"莫迪就中印对峙发声:靠“亚洲古老传统”解决问题",
4   "content":"一大堆最近中国和阿三闹矛盾词语,此处省略N字。。。" 
5 }

4、全文检索+高亮显示

全文检索:

 1 GET news/new/_search
 2 {
 3     "query" : 
 4     { 
 5       "match" : 
 6       { 
 7         "content" : "中国 印度 "
 8       }
 9     }
10 }

高亮显示

 1 GET news/new/_search
 2 {
 3         "query" : 
 4         { 
 5           "match" : 
 6             { 
 7                   "content" : "中国 印度 "
 8             }
 9         }
10       , 
11       "highlight":
12       {
13         "pre_tags" : ["<tag1>", "<tag2>"],
14         "post_tags" : ["</tag1>", "</tag2>"],
15         "fields" : {
16             "content" : {}
17         }
18     }
19 }

elasticsearc实例讲解增删改查

https://www.cnblogs.com/subendong/p/7295549.html

1、首先弄明白四个概念

 

elasticsearch 关系型数据库
index 数据库
type
document
field 字段

 

如果刚一开始理解比较困难,那你就在心中默念100遍,10遍也可以。。。

如果你做过面向对象开发,我觉得elasticsearch的这四个概念还是很好理解的。

需要重点说明的是document就是一个json格式的字符串,里面包括N个字段。我们可以想象将面向对象语言里面的一个对象序列化成json字符串。

关系型数据库需要先建库,再建表。elasticsearch不需要,在你新增的时候会根据你指定的index,type,document,field自动创建。当然先创建索引也是可以的。

好文学习自:https://www.cnblogs.com/subendong/p/7308647.html

下载及环境安装

https://www.elastic.co/cn/downloads/elasticsearch

上一篇:bindActionCreators简要概述


下一篇:SSM项目实践