Elasticsearch版本:6.0一、ES的集群 由一個或多個相同cluster.name的節點組成,共同承擔數據和負載的壓力。 被選舉的主節點將負責管理集群範圍內的所有變更,如增加/刪除索引、增加/刪除節點等,但是不涉及文檔級別變更和搜索等操作。 請求可以發送到集群中的任何節點上,每個節點都知... ...
Elasticsearch版本:6.0
一、ES的集群
由一個或多個相同cluster.name的節點組成,共同承擔數據和負載的壓力。
被選舉的主節點將負責管理集群範圍內的所有變更,如增加/刪除索引、增加/刪除節點等,但是不涉及文檔級別變更和搜索等操作。
請求可以發送到集群中的任何節點上,每個節點都知道任意文檔所處的位置,並且能把請求直接轉發到存儲我們所需文檔的節點,它都能負責從包含我們所需文檔的節點收集回數據,並將最終結果返回給客戶端。
二、ES的分片
ES添加數據用到的索引實際上指向了一個或者多個物理分片的邏輯命名空間。
一個分片是一個底層的工作單元,保存了一部分數據,一個分片是一個Lucene實例。
索引內任何一個文檔都歸屬於一個主分片,所以主分片的數目決定著索引能保存的最大數據量。
一個副本分片是一個主分片的拷貝,作為保護數據不丟失的冗餘備份,併為搜索和返迴文檔等讀操作提供服務。
索引建立的時候就確定了主分片數,但是副本分片可以隨時修改,
分片創建方法:(索引名為test,分配了3個主分片和一個副本分片,每個主分片有一個副本分片)
PUT /test
{
"settings" : {
"number_of_shards" : 3,
"number_of_replicas" : 1
}
}
三、單機環境
此時的ES健康狀態status欄位是yellow,因為副本沒有被分配到任何節點上。
四、水平擴容
1、啟動第二個節點,只要cluster.name和第一個節點相同,就會自動發現集群並加入,如果是不同機器,需要配置一個可連接到的單播主機列表。
此時3個副本被分配到NODE2,所有被索引的文檔都會保存在主分片上,然後被並行複製到對應副本分片上,保證我們既可以從主分片又可以從副本分片上獲取文檔。
2、自動第三個節點,集群會為了分散負載而對分片進行重新分配。(最多可以啟用6個節點有效)
副本分片數是可以在運行的集群上動態調整的
把分片增加到2
PUT /blogs/_settings{"number_of_replicas" : 2}此時的集群分片狀態如下
五、節點故障
關閉主節點,集群首先會選舉一個新的主節點,新的主節點再立即把在NODE2和NODE3對應的副本分片提升為主分片,此時集群狀態變為yellow。
重啟主節點,集群可以將確實的副本分片再次分配,如果NODE1依然擁有之前的分片,它將嘗試重用他們,同時僅從主分片複製發生了修改的數據文件。