筆記:Elasticsearch基本概念

假裝鎮定發表於2018-10-07

Lucene是一個由Java語言開發的開源全文檢索引擎工具包。把Lucene用Netty封裝成服務,使用JSON訪問就是Elasticsearch。
Elasticsearch內建了對分散式叢集和分散式索引的管理,所以相對Solr來說,不需要額外安裝ZooKeeper,其更容易分散式部署。使用Elasticsearch的搜尋系統整體架構如下圖所示:
在這裡插入圖片描述
Elasticsearch的每一個執行例項稱為一個節點,既可以在同一臺計算機上執行多個例項,也可以在每臺計算機上只執行一個例項。
在一個分散式系統裡,多個Elasticsearch執行例項可以組成一個叢集(cluster),該叢集裡有一個動態選舉出來的主節點(master)。如果主節點失敗,會自動選出新的節點作為主節點,所以不存在單點故障。
在同一個子網中,只需要在每個節點上設定相同的叢集名,這些叢集名相同的節點會自動組成一個叢集。Elasticsearch包含了節點和節點之間通訊模組及節點之間的資料分配和平衡模組。
為了實現容錯,Elasticsearch會把查詢文件集合分解為多個小的索引,每一個小的索引就叫做分片(shards)。每一個分片都可以有0到多個副本(replicas),而每一個副本也都是分片的完整複製品,這樣也提高了查詢速度。
一旦Elasticsearch的某個節點資料損壞或服務不可用的時候,就可以用其他節點來代替壞掉的節點,以達到高可用的目的。當有節點加入或退出時,主節點會根據機器的負載對索引分片進行重新分配,當“掛掉”的節點再次重新啟動的時候也會進行資料恢復(recovery)。
Elasticsearch通過閘道器(Gateway)來管理叢集恢復,可以配置叢集需要加入多個節點才能啟動恢復資料。閘道器配置用於恢復任何失敗的索引。當節點奔潰並重新啟動時,Elasticsearch將從閘道器讀取所有的索引和後設資料。
Transport代表Elasticsearch內部的節點或者叢集與客戶端之間的互動方式,預設使用TCP協議進行互動,同事支援HTTP協議(JSON格式)、thrift、Servlet、Memcached、ZeroMQ等多種的傳輸協議(通過外掛方式整合)。
為了讓叢集在執行時動態附加額外的功能,可以使用外掛機制載入實現公共介面的程式集。Elasticsearch外掛用於各種特定的方式擴充套件基本的Elasticsearch功能。

  • Elasticsearch的優點
  1. 橫向可擴充套件性:只需要增加一臺伺服器,做一點配置,啟動一下Elasticsearch程式就可以併入叢集
  2. 分片機制提供更好的分佈性:同一個索引分成多個分片(sharding),這點類似於HDFS的塊機智;分而治之的方式可提升處理效率
  3. 高可用:提供複製(replica)機制,一個分片可以設定多個複製,使得某臺伺服器在當機的情況下,叢集仍舊可以照常執行,並會把伺服器當機丟失的資料資訊複製恢復到其他可用節點上
  4. 使用簡單:只需一條命令就可以下載檔案,然後很快就能搭建一個站內搜尋引擎。
  • 全文搜尋
    是指計算機搜尋程式通過掃描文章中的每一個詞,對每一個詞建立一個索引,指明該詞在文章中出現的次數和位置,當使用者查詢時,搜尋程式就根據事先建立的索引進行查詢,並將查詢的結果反饋給使用者。這個過程類似於通過字典中的搜尋字表查字的過程。Lucene是目前全球使用最廣的全文搜尋引擎開源庫。

相關文章