《ElasticSearch深度剖析》想輕鬆學會ES這篇文章必看

前言: Elasticsearch是當前搜索引擎市場上最受歡迎的高擴展分佈式搜索引擎!本文從核心知識、工作原理、如何學習等幾個方面進行詳細梳理,還有視頻教程分享,歡迎關注,討論!

《ElasticSearch深度剖析》想輕鬆學會ES這篇文章必看


一、ElasticSearch是為了解決什麼問題而產生?

  • 想一想:億級數據我們如何檢索?
    當系統數量量上了幾十億上百億,我們一般會這樣進行思考:
    1)數據庫優化,優化到極致的時候還是不能解決問題,怎麼辦?
    答:mysql或者mongodb還有緩存!
    2)如何解決單點問題?
    答:F5,ZK,MQ
    3)怎麼確保數據安全性?
    答: 熱冷備,異地多活
    4)檢索時間太長的問題如何解決?
    答:分表分庫
    5)數據統計分析如何解決?
    答:異步 、非實時
  • 傳統應對方案
    1)主從備份解決安全性問題
    2)通過數據庫代理解決單點故障問題和查詢分發問題
《ElasticSearch深度剖析》想輕鬆學會ES這篇文章必看

  • Nosql應對方案
    1)通過副本備份保證數據安全
    2)通過節點競爭解決單節點問題
    3)先檢索分片信息,再分發到各個節點。
《ElasticSearch深度剖析》想輕鬆學會ES這篇文章必看

  • 把數據存入內存(是否是最佳方案?)
    ES另闢蹊徑,把數據放入內存,但是我們知道這樣是不可靠的,實際上也不太現實,當我們的數據達到一定量級的時候,內存完全不夠用,擴充內存的巨大成本是不可接受的。

    為了解決問題,我們需找了其他方式(ES方式):
    1)有序存儲數據
    2)數據和索引分離
    3)壓縮數據

二、基礎入門

  • ElasticSearch簡介
    1)elasticsearch是一個基於Lucene的高擴展的分佈式搜索引擎,開箱即用,非常方便!
    2)elasticsearch隱蔽了Lucene的複雜性,對外提供Restful 風格的API來操作檢索。
  • 解決痛點
    1)擴展性好,能夠部署近百臺服務器集群,處理TB以上級數據
    2)幾乎可以實現實時的去檢索數據。
  • 工作原理
    1)索引結構
    下圖是ElasticSearch的索引結構,黑色部分屬於物理結構,橙色部分屬於邏輯結構,邏輯結構是為了更好的解釋ElasticSearch的工作原理以及更好的使用物理結構。
《ElasticSearch深度剖析》想輕鬆學會ES這篇文章必看

ES物理結構和邏輯結構

  • 核心概念
    1)Cluster:集群
    ES支持集群搭建
    2)Node:節點
    形成集群的每個服務器
    3)Shard(分片)
    當有大量的doc存在時,由於內存空間不足,磁盤IO能力有限,沒有辦法足夠快的響應請求,單節點已經無法滿足需求。這種情況下,ES會把數據分為多個小的分片,將這些分片放到不同的服務器上。當你檢索的時候,首先獲取分佈在不同分片上的索引,ES會把查詢分發給相關的分片,並將結果集合起來,這個過程對用戶來說是無感且透明的!
    4)Replia(副本)
    為了提高查詢的吞吐量和實現高可用,ES設計了分片副本。副本就是把分片進行精確複製,每個分片可以沒有或者多個副本。ES中可以有許多相同的分片,系統會選擇一個分片作為主分片。 當主分片意外丟失,集群就會把其中一個副本提升為新的主分片。
    5)全文檢索
    全文檢索就是對一篇文章進行檢索,可以根據關鍵字進行檢索,類似於關係型數據庫中的的like語句。 全文索引就是把內容根據詞表進行分詞,然後創建索引!
《ElasticSearch深度剖析》想輕鬆學會ES這篇文章必看


三、應用場景

  • ELK是什麼東東?
    ES目前最大的引用場景莫過於分佈式日誌分析系統ELK(elasticsearch+Logstash+kibana )
    logstash: 日誌收集
    kibana:日誌數據分析可視化
    ELK架構為數據分佈式存儲系統、可視化查詢界面和日誌解析機制創建了一個功能強大的管理鏈。 三者相互配合,相輔相成,取長補短,共同完成分佈式大數據處理工作。
  • 應用案例
    國內外很多優秀的案例,比比皆是,Github就是使用ES搭建,危機百科的核心基礎也是ES,百度目前也官方使用ES作為文本數據分析,每天處理30TB的數據。
  • 我們也可以有?
    我們必須可以有,今年ElasticSearch發展飛速,已經超越其最初的搜索引擎的角色定位,現在已經增加了數據聚合分析和可視化特性,如果你有數以億計的文檔需要通過關鍵詞定位,ES肯定是最佳選擇。當然你可以把他當緩存服務使用,一樣優秀。
  • 什麼場景使用ES?
    業務不對操作的事性務有特殊要求,權限也不需要非常細,因為ES的權限屬於短板。我們不需要大量的原子操作,還有ES可以完美解決業務流程多版本聚合的問題。
《ElasticSearch深度剖析》想輕鬆學會ES這篇文章必看


四、如何部署

  • Liunx平臺安裝:
    1)下載:https://www.elastic.co/cn/downloads/
    2)解壓啟動:bin/elasticsearch -d (後臺運行)
  • windows平臺下安裝:
    https://blog.csdn.net/linkkb/article/details/82805145

五、出現問題如何解決

出現問題,我們可以到ES中文社區提問,會有很多熱心的夥伴幫助你:http ://elasticsearch.cn/

六、視頻教程分享(無門檻)

《ElasticSearch深度剖析》想輕鬆學會ES這篇文章必看

elasticsearch無門檻視頻教程

結語: 該文章屬於系列文章,筆者會持續更新,隨後也會發SpringBoot2.0系列文章,還有SpringCloud Alibaba版本系列文章,大家可以持續關注。

關注:私信回覆關鍵字:ES教程 獲取資源!


分享到:


相關文章: