【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)。
------------------------------------------------