集羣是一個或多個節點(服務器)的集合,它們一塊兒保存整個數據,並提供跨全部節點的聯合索引和搜索功能。集羣由集羣名惟一名稱標識(默認名稱爲「elasticsearch」)。集羣名稱很重要,由於若是節點設置爲經過集羣名稱加入集羣,則節點只能成爲集羣的一部分。 確保不要在不一樣的環境中重複使用相同的羣集名稱,不然可能會致使節點加入錯誤的集羣。例如,您可使用logging-dev,logging-stage和logging-prod分別做爲dev、stageing、prod集羣的名稱。服務器
節點是隸屬於集羣的單個服務器,存儲數據並參與集羣的索引和搜索功能。像集羣同樣,節點也由一個名稱來標識,默認狀況下該名稱是在啓動時分配給節點的隨機通用惟一標識符(UUID)。若是不須要默認值,能夠定義任何您想要的節點名稱。此名稱對於管理目的很是重要,您須要肯定網絡中的哪些服務器與Elasticsearch羣集中的哪些節點相對應。 能夠將節點配置爲按集羣名稱加入特定集羣。默認狀況下,每一個節點都設置爲加入名爲elasticsearch的集羣,這意味着若是啓動網絡中的多個節點並假設他們能夠發現其餘節點,它們將自動造成並加入名爲elasticsearch的單個集羣。 在單個羣集中,您能夠擁有任意數量的節點。此外,若是網絡上當前沒有其餘Elasticsearch節點正在運行,則默認狀況下啓動單個節點會造成一個名爲elasticsearch的新單節點羣集。網絡
索引是一些具備類似特徵的文檔集合。例如,您能夠擁有客戶數據的索引,產品目錄的另外一個索引以及訂單數據的另外一個索引。索引由名稱(必須所有爲小寫)標識,而且此名稱用於在對其中的文檔執行索引,搜索,更新和刪除操做時引用索引。 在單個羣集中,您能夠根據須要定義多個索引。elasticsearch
在索引內,您能夠定義一個或多個類型。類型是索引的邏輯類別/分區,其語義徹底取決於開發者。一般,爲具備一組公共字段的文檔定義類型。例如,假設您運行博客平臺並將全部數據存儲在單個索引中。在此索引中,您能夠爲用戶數據定義類型,爲博客數據定義另外一種類型,併爲註釋數據定義另外一種類型。性能
文檔是可被索引的基本信息單位。例如,能夠爲單個客戶提供文檔,爲單個產品提供另外一個文檔,爲單個訂單提供另外一個文檔。本文檔以JSON(JavaScript Object Notation)表示,它是一種無處不在的互聯網數據交換格式。 在索引/類型中,能夠根據須要存儲任意數量的文檔。請注意,儘管文檔實際上駐留在索引中,但實際上文檔必須被索引/分配給索引內的類型。索引
索引可能存儲大量數據,這些數據可能會超出單個節點的硬件限制。例如,佔用1TB磁盤空間的十億份文檔的單個索引可能不適合單個節點的磁盤,或者可能太慢而沒法單獨向單個節點提供搜索請求。 爲了解決這個問題,Elasticsearch提供了將索引細分爲多個碎片的能力。當您建立索引時,您能夠簡單地定義所需的碎片數量。每一個分片自己都是一個功能齊全且獨立的「索引」,能夠在集羣中的任何節點上進行託管。 分片很重要,主要有兩個緣由: ip
它容許水平分割/縮放索引開發
它容許跨越分片(可能在多個節點上)分發和並行化操做,從而提升性能/吞吐量 文檔
分片如何分佈的機制以及其文檔如何聚合回搜索請求徹底由Elasticsearch管理,而且對用戶透明。博客
在隨時可能出現故障的網絡/雲環境中,強烈建議有一個故障切換(fail over)機制,以防碎片/節點以某種方式脫機或因任何緣由而消失。爲此,Elasticsearch容許您將索引碎片的一個或多個副本製做爲簡稱爲副本碎片或副本。 產品
複製很重要,主要有兩個緣由:
它在碎片/節點失敗的狀況下提供高可用性。因爲這個緣由,須要注意的是,副本分片永遠不會分配到與從中複製的原始/主分片相同的節點上。
它容許您擴展搜索量/吞吐量,由於搜索能夠在全部副本上並行執行。
總而言之,每一個索引能夠分紅多個分片。索引也能夠被複製爲零(意味着沒有副本)或更屢次。一旦複製,每一個索引將具備主分片(從中複製的原始分片)和副本分片(主分片的副本)。在建立索引時,能夠爲每一個索引定義分片和副本的數量。在建立索引以後,您能夠隨時更改動態副本的數量,但您沒法在過後更改碎片的數量。 默認狀況下,Elasticsearch中的每一個索引都分配了5個主分片和1個副本,這意味着若是羣集中至少有兩個節點,則索引將包含5個主分片和另外5個副本分片(1個完整副本),總共每一個索引10個碎片。