分佈式搜索引擎ElasticSearch
1.引入
1.1 爲什麼要使用ElasticSearch?
場景再現:小張在做電商項目的商品搜索相關的事務時,原本使用的是MySQL數據庫進行,但是最近出現了問題,商品越來越多,自然速度也越來越慢。
在測試時,數據僅僅上萬條時,關鍵詞查詢就比較慢了,如果一旦企業級的數據。響應速度就更加不能接受了。原因在於在數據庫做模糊查詢時,如LIKE語句,它會遍歷整張表,同時進行字符串匹配。
2.ElasticSearch簡介
2.1 什麼是ElasticSearch?
Elasticsearch是一個實時的分佈式搜索和分析引擎。它可以幫助你用前所未有的速
度去處理大規模數據。ElasticSearch是一個基於Lucene的搜索服務器。它提供了一個分
布式多用戶能力的全文搜索引擎,基於RESTful web接口。Elasticsearch是用Java開發
的,並作爲Apache許可條款下的開放源碼發佈,是當前流行的企業級搜索引擎。設計用
於雲計算中,能夠達到實時搜索,穩定,可靠,快速,安裝使用方便。
2.2 ElasticSearch特點
- 可以作爲一個大型分佈式集羣(數百臺服務器)技術,處理PB級數據,服務大公司;也可以運行在單機上,服務小公司
- Elasticsearch不是什麼新技術,主要是將全文檢索、數據分析以及分佈式技術,合併在了一起
- 對用戶而言,是開箱即用的,非常簡單,作爲中小型的應用,直接3分鐘部署一下ES
- Elasticsearch作爲傳統數據庫的一個補充,比如全文檢索,同義詞處理,相關度排名,複雜數據分析,海量數據的近實時處理;
2.3 ElasticSearch應用場景
- 維基百科,類似百度百科,全文檢索,高亮,搜索推薦
- The Guardian(國外新聞網站),類似搜狐新聞,用戶行爲日誌(點擊,瀏覽,收藏,評論)+社交網絡數據(對某某新聞的相關看法),數據分析,給到每篇新聞文章的作者,讓他知道他的文章的公衆反饋(好,壞,熱門,垃圾,鄙視,崇拜)
- Stack Overflow(國外的程序異常討論論壇),IT問題,程序的報錯,提交上去,有人會跟你討論和回答,全文檢索,搜索相關問題和答案,程序報錯了,就會將報錯信息粘貼到裏面去,搜索有沒有對應的答案
- GitHub(開源代碼管理),搜索上千億行代碼
- 電商網站,檢索商品
- 日誌數據分析,logstash採集日誌,ES進行復雜的數據分析(ELK技術,elasticsearch+logstash+kibana)
- 商品價格監控網站,用戶設定某商品的價格閾值,當低於該閾值的時候,發送通知消息給用戶,比如說訂閱牙膏的監控,如果高露潔牙膏的家庭套裝低於50塊錢,就通知我,我就去買。
2.4 ElasticSearch體系結構
下表是Elasticsearch與MySQL數據庫邏輯結構概念的對比
Elasticsearch | 關係型數據庫Mysql |
---|---|
索引(index) | 數據庫(databases) |
類型(type) | 表(table) |
文檔(document) | 行(row) |