ElasticSearch-01-簡單認識ElasticSearch

簡單認識Elasticsearch

在最初接觸到Elasticsearch的時候是公司需要使用到用戶的一些日誌的統計,
再到後來會用在用戶搜索行爲的打分與推薦;可以說ElasticSearch對於開發的使用,運維的維護都有着很好的支持。

1、搜索

平常我們在Google上進行問題的搜索查詢;AppStore,安卓市場中的輸入關鍵字找到心儀的軟件;釘釘的搜索公司人名;開發軟件中搜索對應的信息等等許多場景下都是搜索,只是最後的承接持久化不一樣,MySQL,Elasticsearch,Redis,Odps,Hive,Hbase等等,最終的目的是希望可以找到與關鍵字表徵上更加一致,意義更加相近的信息。

2、數據庫

MySQL是我們最長使用到的存儲介質,優秀的性能,很好的社區與完善的文檔,使得使用很方便;在我們進行搜索的時候數據庫可以進行一些簡單的 模糊匹配,但是如果存儲的信息較多,假定一篇博文存儲在數據庫的一列中(該方式不一定好,只做假設),如果我們通過某個關鍵字搜索到某一篇博文,那麼需要對於數據庫中所有的文本進行掃描匹配,是否包含對應的而關鍵字;

所以如果利用數據庫的形式在進行搜索通常來看,性能並不會很好;

3、Lucene

關於Lucene的介紹可以參考博文
1)Lucene全文搜索原理與使用 :https://blog.csdn.net/yangqian201175/article/details/51462413
2)Lucene參與項目持久層中對於索引庫的增刪:https://blog.csdn.net/yangqian201175/article/details/51478109

4、ElasticSearch

Lucene的使用和查詢可以基本滿足一些簡單的需求,但是如果數據量很大的話呢,超過了垂直擴容的極限,就需要考慮使用多臺機器進行數據的存儲,管理,搜索,那麼如果需要自己進行實現的話,就需要考慮諸多問題,比如數據如何均勻的分配,數據如何可以更快的查詢,索引的CRUD,如果保證整個系統的高可用性;

Elasticsearch就很好的幫助我們解決了上述問題;

  1. ElasticSearch可以自動維護數據的分佈,當我們建立索引後,可以根據設置進行主分片以及副分片的設置,並且可以將搜索請求分佈到多個節點執行;
  2. 自動維護上述所說的副本,可以保證在主分片數與副分片數設置合理的情況下,當機器發生宕機的時候,副分片可以升級爲主分片,保證數據的不丟失;
  3. 並且提供了比如聚合分析,地理位置搜索等高級功能;
  4. 開箱即用的,非常簡單,運維在進行集羣的部署與維護上很方便,有着完善的社區和官方文檔可以諮詢與查看。

5、ElasticSearch使用場景簡單介紹

(1)維基百科,類似百度百科,牙膏,牙膏的維基百科,全文檢索,高亮,搜索推薦;
(2)The Guardian(國外新聞網站),類似搜狐新聞,用戶行爲日誌(點擊,瀏覽,收藏,評論)+社交網絡數據(對某某新聞的相關看法),數據分析,給到每篇新聞文章的作者,讓他知道他的文章的公衆反饋的正向性與負面性;
(3)Stack Overflow(國外的程序異常討論論壇),IT問題,程序的報錯,提交上去,有人會跟你討論和回答,全文檢索,搜索相關問題和答案,程序報錯了,就會將報錯信息粘貼到裏面去,搜索有沒有對應的答案;
(4)GitHub(開源代碼管理),搜索上千億行代碼;
(5)電商網站,檢索商品;
(6)日誌數據分析,logstash採集日誌,ES進行復雜的數據分析(ELK技術,elasticsearch+logstash+kibana);
(7)商品價格監控網站,用戶設定某商品的價格閾值,當低於該閾值的時候,發送通知消息給用戶;
(8)BI系統,商業智能,Business Intelligence。比如說有個大型商場集團,BI數據分析,ES執行數據分析和挖掘,Kibana進行數據可視化等等。

上述五點僅僅是大致上的簡單認識Elasticsearch可以做一些什麼事兒,可以幫助我們完成哪些工作。

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