ElasticSerach特點和技術介紹

ElasticSerach特點和技術介紹

1. 基本資料

Elasticsearch(ES)是一個基於Lucene構建的開源、分佈式、RESTful接口的全文搜索引擎。Elasticsearch還是一個分佈式文檔數據庫,其中每個字段均可被索引,而且每個字段的數據均可被搜索,ES能夠橫向擴展至數以百計的服務器存儲以及處理PB級的數據。可以在極短的時間內存儲、搜索和分析大量的數據。通常作為具有複雜搜索場景情況下的核心發動機。

2. 特點介紹

1. 可以作為一個大型分佈式集群(數百臺服務器)技術,處理PB級數據,服務大公司;也可以運行在單機上,服務小公司;

2. 將全文檢索、數據分析以及分佈式技術,合併在了一起,才形成了獨一無二的ES;lucene作為全文檢索、 mycat分佈式數據庫;

3. 對用戶而言,是開箱即用的,非常簡單,作為中小型的應用,直接3分鐘部署一下ES;

4. 數據庫的功能面對很多領域是不夠用的(事務,還有各種聯機事務型的操作);特殊的功能,比如全文檢索,同義詞處理,相關度排名,複雜數據分析,海量數據的近實時處理。

3. 使用場景

1. 維基百科;

2. The Guardian(國外新聞網站);

3. Stack Overflow(國外的程序異常討論論壇);

4. GitHub(開源代碼管理);

5. 電商網站;

6. 日誌數據分析;

7. 商品價格監。

4. Elasticsearch與Solr對比

1. 當單純的對已有數據進行搜索時,Solr更快;

2. 當實時建立索引時, Solr會產生io阻塞,查詢性能較差 ;

3. 實時建立索引 Elasticsearch具有明顯的優勢;

4. 隨著數據量的增加,Solr的搜索效率會變得更低,而Elasticsearch卻沒有明顯的變化。

5. 隨數據量的增加 搜索效率會變得更低;

6. Solr的架構不適合實時搜索的應用。

5. 架構圖

ElasticSerach特點和技術介紹

6. 技術介紹

1. Near Realtime(NRT) 幾乎實時

Elasticsearch是一個幾乎實時的搜索平臺。意思是,從索引一個文檔到這個文檔可被搜索只需要一點點的延遲,這個時間一般為毫秒級。

2. Cluster 集群

群集是一個或多個節點(服務器)的集合, 這些節點共同保存整個數據,並在所有節點上提供聯合索引和搜索功能。一個集群由一個唯一集群ID確定,並指定一個集群名(默認為"elasticsearch")。該集群名非常重要,因為節點可以通過這個集群名加入群集,一個節點只能是群集的一部分。

確保在不同的環境中不要使用相同的群集名稱,否則可能會導致連接錯誤的群集節點。例如,你可以使用logging-dev、logging-stage、logging-prod分別為開發、階段產品、生產集群做記

3. Node節點

節點是單個服務器實例,它是群集的一部分,可以存儲數據,並參與群集的索引和搜索功能。就像一個集群,節點的名稱默認為一個隨機的通用唯一標識符(UUID),確定在啟動時分配給該節點。如果不希望默認,可以定義任何節點名。這個名字對管理很重要,目的是要確定你的網絡服務器對應於你的ElasticSearch群集節點。

我們可以通過群集名配置節點以連接特定的群集。默認情況下,每個節點設置加入名為"elasticSearch"的集群。這意味著如果你啟動多個節點在網絡上,假設他們能發現彼此都會自動形成和加入一個名為"elasticsearch"的集群。

在單個群集中,您可以擁有儘可能多的節點。此外,如果"elasticsearch"在同一個網絡中,沒有其他節點正在運行,從單個節點的默認情況下會形成一個新的單節點名為"elasticsearch"的集群。

4. Index索引

索引是具有相似特性的文檔集合。例如,可以為客戶數據提供索引,為產品目錄建立另一個索引,以及為訂單數據建立另一個索引。索引由名稱(必須全部為小寫)標識,該名稱用於在對其中的文檔執行索引、搜索、更新和刪除操作時引用索引。在單個群集中,您可以定義儘可能多的索引。

5. Type類型

在索引中,可以定義一個或多個類型。類型是索引的邏輯類別/分區,其語義完全取決於您。一般來說,類型定義為具有公共字段集的文檔。例如,假設你運行一個博客平臺,並將所有數據存儲在一個索引中。在這個索引中,您可以為用戶數據定義一種類型,為博客數據定義另一種類型,以及為註釋數據定義另一類型。

6. Document文檔

文檔是可以被索引的信息的基本單位。例如,您可以為單個客戶提供一個文檔,單個產品提供另一個文檔,以及單個訂單提供另一個文檔。本文件的表示形式為JSON(JavaScript Object Notation)格式,這是一種非常普遍的互聯網數據交換格式。

在索引/類型中,您可以存儲儘可能多的文檔。請注意,儘管文檔物理駐留在索引中,文檔實際上必須索引或分配到索引中的類型。

7. Shards & Replicas分片與副本

索引可以存儲大量的數據,這些數據可能超過單個節點的硬件限制。例如,十億個文件佔用磁盤空間1TB的單指標可能不適合對單個節點的磁盤或可能太慢服務僅從單個節點的搜索請求。

為了解決這一問題,Elasticsearch提供細分你的指標分成多個塊稱為分片的能力。當你創建一個索引,你可以簡單地定義你想要的分片數量。每個分片本身是一個全功能的、獨立的"指數",可以託管在集群中的任何節點。

Shards分片的重要性主要體現在以下兩個特徵:

分片允許您水平拆分或縮放內容的大小

分片允許你分配和並行操作的碎片(可能在多個節點上)從而提高性能/吞吐量

這個機制中的碎片是分佈式的以及其文件彙總到搜索請求是完全由ElasticSearch管理,對用戶來說是透明的。

在同一個集群網絡或雲環境上,故障是任何時候都會出現的,擁有一個故障轉移機制以防分片和結點因為某些原因離線或消失是非常有用的,並且被強烈推薦。為此,Elasticsearch允許你創建一個或多個拷貝,你的索引分片進入所謂的副本或稱作複製品的分片,簡稱Replicas。

Replicas的重要性主要體現在以下兩個特徵:

副本為分片或節點失敗提供了高可用性。為此,需要注意的是,一個副本的分片不會分配在同一個節點作為原始的或主分片,副本是從主分片那裡複製過來的。

副本允許用戶擴展你的搜索量或吞吐量,因為搜索可以在所有副本上並行執行。


分享到:


相關文章: