ElasticSearch 介紹及應(yīng)用場景

簡介

ElasticSearch 是當(dāng)前流行的企業(yè)級搜索引擎,能夠達(dá)到實(shí)時搜索,穩(wěn)定,可靠,快速,安裝使用方便,它提供了一個分布式多用戶能力的全文搜索引擎。好官方啊,到底它是個啥鳥,咱們還是老規(guī)矩,。

搜索

舉個簡單的例子,比如要買手機(jī),你登陸京東后,在搜索框搜索”手機(jī)“,會出現(xiàn)N個手機(jī)和手機(jī)周邊的搜索數(shù)據(jù)


image.png

常見搜索

百度、Google:我們想尋找一個我們喜歡的電影或者書籍就會去百度或者Google搜索一下。
互聯(lián)網(wǎng)搜索:電商搜索商品,招聘網(wǎng)站搜索簡歷或者崗位
OA系統(tǒng)的搜索:員工管理搜索,會議管理搜索

數(shù)據(jù)庫搜索

數(shù)據(jù)都是存儲在數(shù)據(jù)庫里面的,如電商網(wǎng)站的商品信息,如果從消費(fèi)者去做搜索功能,我們會這么設(shè)計。


image.png

我們想要搜索手機(jī),我們會這樣寫SQL

select * from tb_product t where t.`name` ='手機(jī)%'

存在問題

第一、如果數(shù)據(jù)量在幾萬或者幾十萬時候,咱們可以快速查出,大家有沒有想過,如果數(shù)據(jù)量在百萬千萬億級別的時候,這樣的查詢還能滿足我們的業(yè)務(wù)?
從早上開始搜索,到晚上估計還沒檢索完畢,我估計客戶會瘋掉住院??。

第二、不能將搜索詞拆分開來,只能搜索名字是“手機(jī)”開頭的手機(jī)商品,如果想搜出“華為手機(jī)”或者”手機(jī)殼“那是搜索不出來的。

第三、快速聚合,實(shí)時檢索,咱們看京東搜索手機(jī)那個圖,一輸入手機(jī),能實(shí)時檢索出符合搜索內(nèi)容有多少個商品。如果是數(shù)據(jù)庫存儲,實(shí)時與數(shù)據(jù)庫交互,數(shù)據(jù)庫早晚的崩的面目全非,估計的跑路了。

So 總體來說用數(shù)據(jù)庫來實(shí)現(xiàn)搜索,不太靠譜,通常性能也會很差 。

全文檢索,倒排索引和Lucene

倒排索引

倒排索引也叫反向索引,有反向索引必有正向索引。通俗來講,正向索引是通過key找value,反向索引則是通過value找key。
倒排列表記錄了出現(xiàn)過某個單詞的所有文檔的文檔列表及單詞在該文檔中出現(xiàn)的位置信息,每條記錄稱為一個倒排項(Posting)。根據(jù)倒排列表,即可獲知哪些文檔包含某個單詞。
比如我們百度大話西游,但是手抖動輸入了”大話游“,看到返回的結(jié)果就是大話西游,結(jié)果確實(shí)是我想要找到的內(nèi)容。


image.png

包括大話西游游戲,大話西游電影,大話西游電視劇等各種信息,倒排索引就是將數(shù)據(jù)或者文檔中的關(guān)鍵詞拆分構(gòu)建一個大表,每個文檔會記錄文檔編號(DocID),單詞在這個文檔中出現(xiàn)的次數(shù)(TF)及單詞在文檔中哪些位置出現(xiàn)過等信息,這樣與一個文檔相關(guān)的信息被稱做倒排索引項(Posting)。所以我們一搜索關(guān)鍵詞,這些文檔全部都會查詢出來。

全文檢索

當(dāng)我們輸入“大話游”,會被拆分成”大”,“話游”2個詞,用2個詞去倒排索引里面去檢索數(shù)據(jù),檢索到的數(shù)據(jù)返回。整個過程就叫做全文檢索


image.png

如果用數(shù)據(jù)庫的思維來做,假如一共1000W的記錄,按照之前的思路就是掃描1000W次,每次掃描,都需要匹配那個文本所有的字符,確認(rèn)是否包含搜索的關(guān)鍵詞,而且還不能將搜索詞拆解來進(jìn)行檢索 。

如果是利用倒排索引的話,假設(shè)還是1000W,拆分出來的詞語,假設(shè)有1億個詞語,那么在倒排索引中,就有1億行。我們可能不需要檢索1億次,有可能檢索1次或者N+1,就能找到我們需要的數(shù)據(jù),也有可能是100W次,也有可能是1000W次.

Lucene

Lucene就是一個jar包庫,里面包含了封裝好的各種建立倒排索引,以及進(jìn)行搜索的代碼,包括各種算法,在我們就用java開發(fā)的時候會用到。

Elasticsearch的包含那些功能

第一、分布式的搜索引擎和數(shù)據(jù)分析引擎

搜索:百度,網(wǎng)站的站內(nèi)搜索,IT系統(tǒng)的檢索
數(shù)據(jù)分析:
電商網(wǎng)站,最近一周手機(jī)商品銷量排名前10的商家有哪些;
新聞網(wǎng)站,最近1個月訪問量排名前3的新聞版塊是哪些

第二、 全文檢索,結(jié)構(gòu)化檢索,數(shù)據(jù)分析

全文檢索:我想搜索商品名稱包含手機(jī)的商品,select * from products where product_name like "%手機(jī)%"
結(jié)構(gòu)化檢索:我想搜索商品分類為電子數(shù)碼的商品都有哪些,select * from products where category_id='電子數(shù)碼'

部分匹配、自動完成、搜索糾錯、搜索推薦
數(shù)據(jù)分析:我們分析每一個商品分類下有多少個商品,select category_id,count(*) from products group by category_id

第三、對海量數(shù)據(jù)進(jìn)行近實(shí)時的處理

分布式:ES自動可以將海量數(shù)據(jù)分散到多臺服務(wù)器上去存儲和檢索
海量數(shù)據(jù)的處理:分布式以后,就可以采用大量的服務(wù)器去存儲和檢索數(shù)據(jù),自然而然就可以實(shí)現(xiàn)海量數(shù)據(jù)的處理了

近實(shí)時:檢索個數(shù)據(jù)要花費(fèi)1小時(這就不要近實(shí)時,離線批處理,batch-processing);在秒級別對數(shù)據(jù)進(jìn)行搜索和分析

跟分布式/海量數(shù)據(jù)相反的:lucene,單機(jī)應(yīng)用,只能在單臺服務(wù)器上使用,最多只能處理單臺服務(wù)器可以處理的數(shù)據(jù)量

Elasticsearch的適用場景

(1)維基百科和百度百科,手機(jī)維基百科,全文檢索,高亮,搜索推薦。

(2)The Guardian(國外新聞網(wǎng)站),類似搜狐新聞,用戶行為日志(點(diǎn)擊,瀏覽,收藏,評論)+社交網(wǎng)絡(luò)數(shù)據(jù)(對某某新聞的相關(guān)看法),數(shù)據(jù)分析,給到每篇新聞文章的作者,讓他知道他的文章的公眾反饋(好,壞,熱門,垃圾,鄙視,崇拜)

(3)Stack Overflow(國外的程序異常討論論壇),IT問題,程序的報錯,提交上去,有人會跟你討論和回答,全文檢索,搜索相關(guān)問題和答案,程序報錯了,就會將報錯信息粘貼到里面去,搜索有沒有對應(yīng)的答案

(4)GitHub(開源代碼管理),搜索上千億行代碼。

(5)電商網(wǎng)站,檢索商品。

(6)日志數(shù)據(jù)分析,logstash采集日志,ES進(jìn)行復(fù)雜的數(shù)據(jù)分析(ELK技術(shù),elasticsearch+logstash+kibana)

(7)商品價格監(jiān)控網(wǎng)站,用戶設(shè)定某商品的價格閾值,當(dāng)?shù)陀谠撻撝档臅r候,發(fā)送通知消息給用戶,比如說訂閱手機(jī)的監(jiān)控,如果iphone的手機(jī)低于3000塊錢,就通知我,我就去買

(8)BI系統(tǒng),商業(yè)智能,Business Intelligence。比如說有個大型商場集團(tuán),BI,分析一下某某區(qū)域最近3年的用戶消費(fèi)金額的趨勢以及用戶群體的組成構(gòu)成,產(chǎn)出相關(guān)的數(shù)張報表,**區(qū),最近3年,每年消費(fèi)金額呈現(xiàn)100%的增長,而且用戶群體85%是高級白領(lǐng),開一個新商場。ES執(zhí)行數(shù)據(jù)分析和挖掘,Kibana進(jìn)行數(shù)據(jù)可視化國內(nèi)。

(9)國內(nèi):站內(nèi)搜索(電商,招聘,門戶,等等),IT OA系統(tǒng)搜索(OA,CRM,ERP,等等),數(shù)據(jù)分析(ES熱門的一個使用場景)

ElasticSearch的特點(diǎn)

(1)可以作為一個大型分布式集群(數(shù)百臺服務(wù)器)技術(shù),處理PB級數(shù)據(jù),服務(wù)大公司;也可以運(yùn)行在單機(jī)上,服務(wù)小公司

(2)Elasticsearch不是什么新技術(shù),主要是將全文檢索、數(shù)據(jù)分析以及分布式技術(shù),合并在了一起,才形成了獨(dú)一無二的ES;lucene(全文檢索),商用的數(shù)據(jù)分析軟件(也是有的),分布式數(shù)據(jù)庫(mycat)

(3)對用戶而言,是開箱即用的,非常簡單,作為中小型的應(yīng)用,直接3分鐘部署一下ES,就可以作為生產(chǎn)環(huán)境的系統(tǒng)來使用了,數(shù)據(jù)量不大,操作不是太復(fù)雜

(4)數(shù)據(jù)庫的功能面對很多領(lǐng)域是不夠用的(事務(wù),還有各種聯(lián)機(jī)事務(wù)型的操作);特殊的功能,比如全文檢索,同義詞處理,相關(guān)度排名,復(fù)雜數(shù)據(jù)分析,海量數(shù)據(jù)的近實(shí)時處理;Elasticsearch作為傳統(tǒng)數(shù)據(jù)庫的一個。

簡介

接下來可以看下Windows 環(huán)境安裝Elasticsearch
一步步去更好的學(xué)習(xí)Elasticsearch

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容