ElasticSearch.js原始碼走一個大概

lq_prototype發表於2019-03-28

介紹

Elasticsearch 是一個分散式可擴充套件的實時搜尋和分析引擎,一個建立在全文搜尋引擎 Apache Lucene(TM) 基礎上的搜尋引擎.當然 Elasticsearch 並不僅僅是 Lucene 那麼簡單。

什麼是ElasticSearch

首先需要知道什麼是lucene,lucene它就是一個Java的jar包,裡面實現了倒排索引的演算法和其他的全文檢索相關的東西,ElasticSearch就是對lucene進行了封裝,為什麼有lucene了還要ElasticSeaearch來幹什麼呢?首先,當資料量很大的時候,比如有1PB的資料,這個時候資料放在同一臺機器上基本就不行了,那麼把資料分開來放在多臺機器上呢?那就變成分散式了,這個時候資料前端獲取資料的時候到底去那一臺機器上面去獲取資料呢?這個時候就很麻煩了,如果某一臺機器當機了,那麼這個機器上的資料就獲取不到了,這也就無法保證高可用性了,還有資料儲存的時候怎麼到底存入那臺機器等等,這些都需要人為的處理和維護。這個時候ElasticSearch就應運而生了,它就將lucene這些弊端給完全解決了。

舉例一些優點

  • 高效能,自動維護資料分佈到多個節點進行索引的建立,還有搜尋請求分佈到多個節點的執行。
  • 高可用,自動維護資料的冗餘副本,保證說,一些機器當機了,不會造成資料的丟失。 封裝了更多的高階功能,以給我們提供更多的高階支援,讓我們快速的開發應用,開發更加複雜的應用,複雜的搜尋功能,聚合分析的功能,基於地理位置的搜尋(比如周圍一公里內有幾家咖啡廳)等等。
  • 動態擴容,當我們資料量急劇提升的時候,我們只需要增加機器就行了,比如兩臺機器存放1.2T資料,那麼沒臺機器存放就是600G,但是如果600G對於伺服器的壓力太大了,這個時候就需要增加第三臺機器,讓他們每人負責400G的資料,這個過程不需要人為的去分配,只需要將汲取加入叢集中就自動完成。

ElasticSearch.js 原始碼走一遍流程

ElasticSearch.js原始碼走一個大概

ElasticSearch.js原始碼走一個大概

相關文章