ElasticSearch 筆記1 - 基礎概念

翻譯自https://www.elastic.co/guide/en/elasticsearch/reference/current/_basic_concepts.html,方便回看。

基礎概念

1. Near Realtime 接近實時

從對文檔創建進行索引開始到該文檔可搜索,大概有1秒的輕微延時。

2. Cluster 集羣

集羣是一個或多個節點(服務器)的集合,承載着所有節點上的數據,對數據進行聯合索引和搜索。每個集羣擁着唯一的id,默認爲elasticsearch。一個節點只能加入一個集羣,由該集羣的唯一id來標識。

在不同的環境中,不要使用相同的集羣id,以免節點加錯集羣。

一個集羣只有一個節點是完全可行的。另外,你可以使用多個獨立的擁有不同id的集羣。

3. Node 節點

一個節點是一臺用來存儲數據,並且參與到索引和搜索功能的服務器,屬於集羣的一部分。類似集羣,一個節點也是通過id來進行識別,默認情況下,這個id是一個隨機的uuid,在節點啓動時進行分配。如果不想使用隨機uuid,可以根據需求自行定義節點id。對於管理節點而言,這個id很重要,它可以用來定位,工作網絡中的哪臺服務器對應elasticsearch集羣中的哪個節點。

一個節點可以通過集羣id,配置加入到該集羣中。默認情況下,每一個節點都會加入一個叫做elasticsearch的集羣。這意味着,如果在網絡中啓動很多節點,並且他們都能相互發現,他們會自動組成一個叫做elasticsearch的集羣。

單個集羣可以擁有任意多個節點。另外,如果當前網絡中沒有工作的節點,啓動一個單獨節點將會默認創建一個叫做elasticsearch的單節點集羣。

4. Index 索引

索引是一組具有一定相似度文檔的集合。例如,你可以爲客戶數據創建索引,爲產品類型創建索引,爲訂單數據創建索引。索引由名稱(必須爲小寫)唯一標識,用來對文檔進行索引、搜索、更新和刪除操作。

在單一集羣中,可以定義任意多的索引。

5. Type 類型

一個索引中,可以定義一個或者多個類型。一個類型是索引的邏輯分類/分區,它的語義完全由用戶決定。總的來說,我們爲擁有一組共同字段的文檔定義一個類型。例如,一個運行的博客平臺,把所有數據都存儲在一個索引中。在這兒索引中,可以爲用戶數據定義一個類型,博客數據定義一個類型,評論數據定義另一個類型。

6. Document 文檔

文檔是能被索引的基本信息單元。例如,一個客戶一個文檔,一個產品一個文檔,一個訂單一個文檔。文檔的格式爲json。

在索引/類型中,可以存儲任意多的文檔。雖然一個文檔物理上存在於索引中,實際上一個文檔可以被索引/分配到一個索引中的類型上。

7. Shards & Replicas 分片 & 副本

一個索引潛在存儲數據的數量,遠遠超出單一節點的物理容量。例如,一個佔用1TB磁盤擁有10億文檔的單一索引,不大可能在在單一節點的磁盤用使用,或因爲太慢而無法在單一節點上提供搜索查詢。

爲解決這個問題,Elasticsearch提供了將索引細分爲分片的功能。在創建索引時,可以指定需要分片的數量。每一個分片具有索引的所有功能,並且可以分佈在集羣中的任意節點上。

分片很重要,因爲

1. 允許垂直分裂/減少內容的量

2. 允許在跨分片分佈和並行操作(多個節點),以提供性能,增加併發。

分片分佈和搜索請求時的文檔聚合機制完全由Elasticsearch來管理,並且對用戶透明。

在網絡/雲環境中,失敗是隨機可能發生的,因此能夠防止分片/節點由於意外宕機的災備策略是相當有用且強烈推薦的。總的來說,Elasticsearch可以創建一個或多個索引分片的拷貝到副本分片中,簡稱爲副本。

副本很重要,因爲

1. 副本提供高可用性,以防分片/節點宕機。因之,要注意一個副本分片不能和它的原副本位於相同的節點上

2. 副本可以降低搜索量/吞吐量,因爲搜索可以在所有副本上並行執行。

總而言之,每一個索引可以劃分爲多個分片。索引可以被複製爲零(無副本)至多份。索引一旦被複制,它將會擁有主分片(被複制的原始分片)和從分片(主分片的拷貝)。分片和副本的數量可在索引被創建時逐一配置。當索引創建後,副本的數量可以動態調整,但分片的數量則不能改動。

默認的,Elasticsearch會爲每個索引分配5個主分片和1個副本。這意味着,當前集羣中至少要有2個節點,其中每個索引會有5個主分片和5個副本分片(即一個完整副本),共10個分片/索引。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章