elasticsearch(一)---開始

P城到底誰說的算發表於2018-08-19

基本概念

有幾個概念是 Elasticsearch 的核心。

近實時

Elasticsearch 是一個近實時搜尋平臺。這意味著在將文件索引到可搜尋的時間之前, 有輕微的延遲 (通常為一秒)。

叢集

叢集是一個或多個節點 (伺服器) 的集合, 它們一起儲存整個資料, 並在所有節點上提供聯合索引和搜尋功能。群集由預設為 "elasticsearch" 的唯一名稱標識。此名稱很重要, 因為如果將節點設定為以其名稱加入群集, 則節點只能是群集的一部分。 請確保在不同的環境中不重用相同的群集名稱, 否則可能會出現連線錯誤群集的節點。

例如, 您可以使用、以及用於開發、轉移和生產群集。logging-devlogging-stagelogging-prod

請注意, 有一個只有一個節點的叢集是有效和完美的。此外, 您還可能有多個獨立的群集, 每個叢集都有自己唯一的群集名稱。

節點

節點是單個伺服器, 它是群集的一部分, 儲存資料, 並參與群集的索引和搜尋功能。與叢集一樣, 節點由一個名稱標識, 預設情況下, 它是在啟動時分配給節點的隨機通用唯一識別符號 (UUID)。如果不需要預設值, 可以定義所需的任何節點名稱。此名稱對於管理目的非常重要, 您需要確定網路中哪些伺服器與 Elasticsearch 群集中的哪些節點相對應。 可以將節點配置為通過群集名稱加入特定的群集。

預設情況下, 每個節點都設定為加入一個名為elasticsearch的群集, 這意味著, 如果您在網路上啟動了許多節點, 並且-假設他們可以發現對方-他們將自動形成並加入一個名為elasticsearch的群集。 在單個群集中, 您可以有儘可能多的節點。此外, 如果網路上當前沒有其他 Elasticsearch 節點, 則啟動單個節點將預設形成一個名為elasticsearch的新單節點群集。

索引

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

型別

一種型別, 用於將不同型別的文件儲存在同一索引中, 如使用者的一種型別, 以及用於部落格帖子的另一種型別, 這是索引的邏輯類別/分割槽。無法再在索引中建立多個型別, 並且將在更高版本中刪除型別的整個概念

文件

文件是可編入索引的基本資訊單元。此文件用JSON (JavaScript 物件表示法) 表示, 它是一種無處不在的 internet 資料交換格式。在索引/型別中, 可以根據需要儲存儘可能多的文件。

碎片& 複製副本

索引可能儲存大量的資料, 從而超過單個節點的硬體限制。例如, 一個單一索引的10億個文件佔用1TB 的磁碟空間可能不適合單個節點的磁碟, 也可能太慢, 無法僅從單個節點中提供搜尋請求。

為了解決這個問題, Elasticsearch 提供了將索引細分為多個碎片的能力。建立索引時, 可以簡單地定義所需的碎片數。每個碎片本身都是一個功能完備且獨立的 "索引", 可以承載在群集中的任何節點上。

分片的主要原因有兩個:


* 它允許您水平地拆分/縮放您的內容。
* 它允許您跨碎片 (可能在多個節點上) 分發和並行化操作, 從而提高效能/吞吐量。
複製程式碼

碎片的分佈方式以及它的文件如何聚合的搜尋請求的機制完全由 Elasticsearch 管理, 並且對您作為使用者是透明的。

在網路/雲環境中, 任何時候都可以預料到故障, 這是非常有用的, 強烈建議有一個故障轉移機制, 以防碎片/節點莫名其妙地離線或消失的原因。

為此, Elasticsearch 允許您將索引的碎片的一個或多個副本複製到所謂的副本碎片或短副本中。

複製之所以重要, 主要有兩個原因:


* 它提供了高可用性, 以防碎片/節點出現故障。因此, 必須注意, 副本碎片永遠不會與它從其複製的原始/主碎片在同一節點上分配。


* 它允許您擴充套件搜尋卷/吞吐量, 因為可以並行地對所有副本執行搜尋。
複製程式碼

總而言之, 每個索引可以分成多個碎片。

索引也可以複製為零 (意味著沒有副本) 或多次。

複製後, 每個索引都將具有主要碎片 (複製自的原始碎片) 和副本碎片 (主要碎片的副本)。

在建立索引時, 每個索引可以定義碎片和副本的數量。建立索引後, 您也可以在任何時候動態更改副本的數量。

您可以使用 _shrink 和 _split api 更改現有索引的碎片數, 但這不是一項微不足道的任務, 對正確數量的碎片進行預先規劃是最佳方法。

預設情況下, Elasticsearch 中的每個索引都分配了5個主要碎片和1個複製副本, 這意味著如果群集中至少有兩個節點, 則索引將有5個主要碎片和另一個5個副本碎片 (1 個完整副本), 每個索引中總共有10個碎片。

相關文章