close

點擊關注公眾號,實用技術文章及時了解


ElasticSearch是一個分布式,高性能、高可用、可伸縮的搜索和分析系統

看了上面這段話,估計很多人都懵了,這個是啥。我們先從搜索說起,先介紹下面幾點

1、什麼是搜索

百度、Google:我們想尋找一個我們喜歡的電影或者書籍就會去百度或者Google搜索一下。

互聯網搜索:電商搜索商品,招聘網站搜索簡歷或者崗位

IT系統的搜索:員工管理搜索,會議管理搜索

2、如果用數據庫做搜索會怎麼樣

在軟件開發裡面,數據都是存儲在數據庫裡面的,比如電商網站的商品信息,員工的信息等等,如果從員工角度去做搜索功能,我們會這麼設計

以上會存在幾個問題:

如果表記錄上千萬上億了這個性能問題,另外一個如果有一個本文字段要在裡面模糊配置,這個就會出現嚴重的性能問題

還不能將搜索詞拆分開來,比如上面這個只能搜索名字是「張三」開頭的員工,如果想搜出「張小三」那是搜索不出來的。

總體來說,用數據庫來實現搜索,是不太靠譜的,通常性能也會很差

3、什麼是全文檢索、倒排索引和Lucene

舉個簡單的例子:比如最近上映的熱劇(碟中諜6:全面瓦解),我們想搜索一下全面瓦解這個電視劇,可是在輸入的過程,不小心輸入了」全瓦解」,我們看看百度這個返回了什麼,百度返回的結果確實是我想要找到的內容,現在我們介紹一下全文檢索和倒排索引是什麼

我們看看下面這個圖,假如我們有很多數據」全面瓦解電影,全面瓦解海報,全面瓦解評論,全面瓦解文章」等等信息,從數據到構建倒排索引的過程我們圖中標記為「1」,通俗一點講就是,倒排索引就是講數據中的詞拆分構建一個大表,將關鍵字拆出來,後面帶上這個文章的documentid號,例如中間這個就是倒排索引了。

全文檢索就比較好理解的,就是當我們輸入「全瓦解」,會被拆分成」全」,「瓦解」2個此,用2個詞去倒排索引裡面去檢索數據,檢索到的數據返回。整個過程就叫做全文檢索

如果這個用數據庫的思維來做的話,假如一共100W的記錄,按照之前的思路就是掃描100W次,而且每次掃描,都需要匹配那個文本所有的字符,確認是否包含搜索的關鍵詞,而且還不能將搜索詞拆解來進行檢索

如果是利用倒排索引的話,假設還是100W,拆分出來的詞語,假設有1000W個詞語,那麼在倒排索引中,就有1000W行。我們可能不需要檢索1000W詞,有可能檢索1次,就能找到我們需要的數據,也有可能是100W次,也有可能是1000W次

lucene:就是一個jar包,裡面包含了封裝好的各種建立倒排索引,以及進行搜索的代碼,包括各種算法。我們就用java開發的時候

4、ElasticSearch是什麼

Lucene是單機的模式,如果你的數據量超過了一台物理機的容量,你需要擴容,將數據拆分成2份放在不同的集群,這個就是典型的分布式計算了。需要拷貝容錯,機器宕機,數據一致性等複雜的場景,這個實現就比較複雜了。

ES解決了這些問題

自動維護數據的分布到多個節點的索引的建立,還有搜索請求分布到多個節點的執行

自動維護數據的冗餘副本,保證了一旦機器宕機,不會丟失數據

封裝了更多高級的功能,例如聚合分析的功能,基於地理位置的搜索

ElasticSearch的功能

1、分布式的搜索引擎和數據分析引擎

搜索:網站的站內搜索,IT系統的檢索
數據分析:電商網站,統計銷售排名前10的商家

2、全文檢索,結構化檢索,數據分析

全文檢索:我想搜索商品名稱包含某個關鍵字的商品
結構化檢索:我想搜索商品分類為日化用品的商品都有哪些
數據分析:我們分析每一個商品分類下有多少個商品

3、對海量數據進行近實時的處理

分布式:ES自動可以將海量數據分散到多台服務器上去存儲和檢索
海聯數據的處理:分布式以後,就可以採用大量的服務器去存儲和檢索數據,自然而然就可以實現海量數據的處理了
近實時:檢索數據要花費1小時(這就不要近實時,離線批處理,batch-processing);在秒級別對數據進行搜索和分析
ElasticSearch的應用場景
維基百科
The Guardian(國外新聞網站)
Stack Overflow(國外的程序異常討論論壇)
GitHub(開源代碼管理)
電商網站
日誌數據分析
商品價格監控網站
BI系統
站內搜索
ElasticSearch的特點
可以作為一個大型分布式集群(數百台服務器)技術,處理PB級數據,服務大公司;也可以運行在單機上,服務小公司
Elasticsearch不是什麼新技術,主要是將全文檢索、數據分析以及分布式技術,合併在了一起
對用戶而言,是開箱即用的,非常簡單,作為中小型的應用,直接3分鐘部署一下ES
Elasticsearch作為傳統數據庫的一個補充,比如全文檢索,同義詞處理,相關度排名,複雜數據分析,海量數據的近實時處理;
來源:xlucas.blog.csdn.net/article/details/82535018

推薦

Java面試題寶典

技術內卷群,一起來學習!!

PS:因為公眾號平台更改了推送規則,如果不想錯過內容,記得讀完點一下「在看」,加個「星標」,這樣每次新文章推送才會第一時間出現在你的訂閱列表里。點「在看」支持我們吧!

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()