ElasticSearch.js源碼走一個大概

介紹

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 源碼走一遍流程

相關文章
相關標籤/搜索