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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章