1、什么是搜索
2、如果用數(shù)據(jù)庫(kù)做搜索會(huì)怎么樣
3、什么是全文檢索、倒排索引和Lucene
4、ElasticSearch是什么
ElasticSearch的功能
ElasticSearch的應(yīng)用場(chǎng)景
ElasticSearch的特點(diǎn)
ElasticSearch是一個(gè)分布式,高性能、高可用、可伸縮的搜索和分析系統(tǒng)
看了上面這段話,估計(jì)很多人都懵了,這個(gè)是啥。我們先從搜索說起,先介紹下面幾點(diǎn)
1、什么是搜索
百度、Google :我們想尋找一個(gè)我們喜歡的電影或者書籍就會(huì)去百度或者Google搜索一下。
互聯(lián)網(wǎng)搜索 :電商搜索商品,招聘網(wǎng)站搜索簡(jiǎn)歷或者崗位
IT系統(tǒng)的搜索 :?jiǎn)T工管理搜索,會(huì)議管理搜索
2、如果用數(shù)據(jù)庫(kù)做搜索會(huì)怎么樣
在軟件開發(fā)里面,數(shù)據(jù)都是存儲(chǔ)在數(shù)據(jù)庫(kù)里面的,比如電商網(wǎng)站的商品信息,員工的信息等等,如果從員工角度去做搜索功能,我們會(huì)這么設(shè)計(jì)
以上會(huì)存在幾個(gè)問題:
如果表記錄上千萬上億了這個(gè)性能問題,另外一個(gè)如果有一個(gè)本文字段要在里面模糊配置,這個(gè)就會(huì)出現(xiàn)嚴(yán)重的性能問題
還不能將搜索詞拆分開來,比如上面這個(gè)只能搜索名字是“張三”開頭的員工,如果想搜出“張小三”那是搜索不出來的。
總體來說,用數(shù)據(jù)庫(kù)來實(shí)現(xiàn)搜索,是不太靠譜的,通常性能也會(huì)很差
3、什么是全文檢索、倒排索引和Lucene
舉個(gè)簡(jiǎn)單的例子:比如最近上映的熱劇(碟中諜6:全面瓦解),我們想搜索一下全面瓦解這個(gè)電視劇,可是在輸入的過程,不小心輸入了”全瓦解”,我們看看百度這個(gè)返回了什么,百度返回的結(jié)果確實(shí)是我想要找到的內(nèi)容,現(xiàn)在我們介紹一下全文檢索和倒排索引是什么
我們看看下面這個(gè)圖,假如我們有很多數(shù)據(jù)”全面瓦解電影,全面瓦解海報(bào),全面瓦解評(píng)論,全面瓦解文章”等等信息,從數(shù)據(jù)到構(gòu)建倒排索引的過程我們圖中標(biāo)記為“1”,通俗一點(diǎn)講就是,倒排索引就是講數(shù)據(jù)中的詞拆分構(gòu)建一個(gè)大表,將關(guān)鍵字拆出來,后面帶上這個(gè)文章的documentid號(hào),例如中間這個(gè)就是倒排索引了。
全文檢索就比較好理解的,就是當(dāng)我們輸入“全瓦解”,會(huì)被拆分成”全”,“瓦解”2個(gè)此,用2個(gè)詞去倒排索引里面去檢索數(shù)據(jù),檢索到的數(shù)據(jù)返回。整個(gè)過程就叫做全文檢索
如果這個(gè)用數(shù)據(jù)庫(kù)的思維來做的話,假如一共100W的記錄,按照之前的思路就是掃描100W次,而且每次掃描,都需要匹配那個(gè)文本所有的字符,確認(rèn)是否包含搜索的關(guān)鍵詞,而且還不能將搜索詞拆解來進(jìn)行檢索
如果是利用倒排索引的話,假設(shè)還是100W,拆分出來的詞語(yǔ),假設(shè)有1000W個(gè)詞語(yǔ),那么在倒排索引中,就有1000W行。我們可能不需要檢索1000W詞,有可能檢索1次,就能找到我們需要的數(shù)據(jù),也有可能是100W次,也有可能是1000W次
lucene:就是一個(gè)jar包,里面包含了封裝好的各種建立倒排索引,以及進(jìn)行搜索的代碼,包括各種算法。我們就用java開發(fā)的時(shí)候
4、ElasticSearch是什么
Lucene是單機(jī)的模式,如果你的數(shù)據(jù)量超過了一臺(tái)物理機(jī)的容量,你需要擴(kuò)容,將數(shù)據(jù)拆分成2份放在不同的集群,這個(gè)就是典型的分布式計(jì)算了。需要拷貝容錯(cuò),機(jī)器宕機(jī),數(shù)據(jù)一致性等復(fù)雜的場(chǎng)景,這個(gè)實(shí)現(xiàn)就比較復(fù)雜了。
ES解決了這些問題
自動(dòng)維護(hù)數(shù)據(jù)的分布到多個(gè)節(jié)點(diǎn)的索引的建立,還有搜索請(qǐng)求分布到多個(gè)節(jié)點(diǎn)的執(zhí)行
自動(dòng)維護(hù)數(shù)據(jù)的冗余副本,保證了一旦機(jī)器宕機(jī),不會(huì)丟失數(shù)據(jù)
封裝了更多高級(jí)的功能,例如聚合分析的功能,基于地理位置的搜索
ElasticSearch的功能
1、分布式的搜索引擎和數(shù)據(jù)分析引擎
搜索:網(wǎng)站的站內(nèi)搜索,IT系統(tǒng)的檢索
數(shù)據(jù)分析:電商網(wǎng)站,統(tǒng)計(jì)銷售排名前10的商家
2、全文檢索,結(jié)構(gòu)化檢索,數(shù)據(jù)分析
全文檢索:我想搜索商品名稱包含某個(gè)關(guān)鍵字的商品
結(jié)構(gòu)化檢索:我想搜索商品分類為日化用品的商品都有哪些
數(shù)據(jù)分析:我們分析每一個(gè)商品分類下有多少個(gè)商品
3、對(duì)海量數(shù)據(jù)進(jìn)行近實(shí)時(shí)的處理
分布式:ES自動(dòng)可以將海量數(shù)據(jù)分散到多臺(tái)服務(wù)器上去存儲(chǔ)和檢索
海聯(lián)數(shù)據(jù)的處理:分布式以后,就可以采用大量的服務(wù)器去存儲(chǔ)和檢索數(shù)據(jù),自然而然就可以實(shí)現(xiàn)海量數(shù)據(jù)的處理了
近實(shí)時(shí):檢索數(shù)據(jù)要花費(fèi)1小時(shí)(這就不要近實(shí)時(shí),離線批處理,batch-processing);在秒級(jí)別對(duì)數(shù)據(jù)進(jìn)行搜索和分析
ElasticSearch的應(yīng)用場(chǎng)景
維基百科
The Guardian(國(guó)外新聞網(wǎng)站)
Stack Overflow(國(guó)外的程序異常討論論壇)
GitHub(開源代碼管理)
電商網(wǎng)站
日志數(shù)據(jù)分析
商品價(jià)格監(jiān)控網(wǎng)站
BI系統(tǒng)
站內(nèi)搜索
ElasticSearch的特點(diǎn)
可以作為一個(gè)大型分布式集群(數(shù)百臺(tái)服務(wù)器)技術(shù),處理PB級(jí)數(shù)據(jù),服務(wù)大公司;也可以運(yùn)行在單機(jī)上,服務(wù)小公司
Elasticsearch不是什么新技術(shù),主要是將全文檢索、數(shù)據(jù)分析以及分布式技術(shù),合并在了一起
對(duì)用戶而言,是開箱即用的,非常簡(jiǎn)單,作為中小型的應(yīng)用,直接3分鐘部署一下ES
Elasticsearch作為傳統(tǒng)數(shù)據(jù)庫(kù)的一個(gè)補(bǔ)充,比如全文檢索,同義詞處理,相關(guān)度排名,復(fù)雜數(shù)據(jù)分析,海量數(shù)據(jù)的近實(shí)時(shí)處理;
-
JAVA
+關(guān)注
關(guān)注
20文章
2982瀏覽量
106393 -
數(shù)據(jù)庫(kù)
+關(guān)注
關(guān)注
7文章
3876瀏覽量
65452 -
Elasticsearch
+關(guān)注
關(guān)注
0文章
30瀏覽量
2943
原文標(biāo)題:ElasticSearch是什么?應(yīng)用場(chǎng)景是什么?
文章出處:【微信號(hào):芋道源碼,微信公眾號(hào):芋道源碼】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論