【Cluster】
叢集,一個ES叢集由一個或多個節點(Node)組成,每個叢集都有一個cluster name作為辨別
------------------------------------------------
【node】
節點,一個ES執行個體就是一個node,一個機器可以有多個執行個體,是以并不能說一台機器就是一個node,大多數情況下每個node運作在一個獨立的環境或虛拟機上。
【index】
索引,即一系列documents的集合
【shard】
分片,ES是分布式搜尋引擎,每個索引有一個或多個分片,索引的資料被配置設定到各個分片上,相當于一桶水用了N個杯子裝,分片有助于橫向擴充,N個分片會被盡可能平均地(rebalance)配置設定在不同的節點上(例如你有2個節點,4個主分片(不考慮備份),那麼每個節點會分到2個分片,後來你增加了2個節點,那麼你這4個節點上都會有1個分片,這個過程叫relocation,ES感覺後自動完成),分片是獨立的,對于一個Search Request的行為,每個分片都會執行這個Request.另外,每個分片都是一個Lucene Index,是以一個分片隻能存放 Integer.MAX_VALUE - 128 = 2,147,483,519 個docs。[LUCENE-5843] IndexWriter should refuse to create an index with more than INT_MAX docs
【replica】
複制,可以了解為備份分片,相應地有primary shard(主分片),主分片和備分片不會出現在同一個節點上(防止單點故障),預設情況下一個索引建立5個分片一個備份(即5primary+5replica=10個分片),如果你隻有一個節點,那麼5個replica都無法配置設定(unassigned),此時cluster status會變成Yellow。replica的作用主要包括:
1.容災:primary分片丢失,replica分片就會被頂上去成為新的主分片,同時根據這個新的主分片建立新的replica,叢集資料安然無恙
2.提高查詢性能:replica和primary分片的資料是相同的,是以對于一個query既可以查主分片也可以查備分片,在合适的範圍内多個replica性能會更優(但要考慮資源占用也會提升[cpu/disk/heap]),另外index request隻能發生在主分片上,replica不能執行index request。
對于一個索引,除非重建索引否則不能調整分片的數目(主分片數, number_of_shards),但可以随時調整replica數(number_of_replicas)。