Elasticsearch的集群
ElasticSearch 的主旨是隨時可用和按需擴容屡拨。 而擴容可以通過購買性能更強大( 垂直擴容 衬浑,或 縱向擴容 ) 或者數(shù)量更多的服務(wù)器( 水平擴容 盾碗,或 橫向擴容 )來實現(xiàn)刊咳。
節(jié)點
一個運行中的 Elasticsearch 實例稱為一個 節(jié)點纪岁,而集群是由一個或者多個擁有相同 cluster.name 配置的節(jié)點組成卒密, 它們共同承擔(dān)數(shù)據(jù)和負載的壓力。當(dāng)有節(jié)點加入集群中或者從集群中移除節(jié)點時岳掐,集群將會重新平均分布所有的數(shù)據(jù)凭疮。
主節(jié)點
負責(zé)管理集群范圍內(nèi)的所有變更,例如增加串述、刪除索引执解,或者增加、刪除節(jié)點等纲酗;
無論我們將請求發(fā)送到哪個節(jié)點(主節(jié)點衰腌、從節(jié)點),它都能負責(zé)從各個包含我們所需文檔的節(jié)點收集回數(shù)據(jù)觅赊,并將最終結(jié)果返回給客戶端
Elasticsearch的健康檢查
GET /_cluster/health
返回
{
"cluster_name": "elasticsearch",
"status": "green",
"timed_out": false,
"number_of_nodes": 1,
"number_of_data_nodes": 1,
"active_primary_shards": 0,
"active_shards": 0,
"relocating_shards": 0,
"initializing_shards": 0,
"unassigned_shards": 0
}
green
所有的主分片和副本分片都正常運行右蕊。
yellow
所有的主分片都正常運行,但不是所有的副本分片都正常運行吮螺。
red
有主分片沒能正常運行饶囚。
索引
索引實際上是指向一個或者多個物理 分片 的 邏輯命名空間
分片
分片是數(shù)據(jù)的容器帕翻,文檔保存在分片內(nèi),分片又被分配到集群內(nèi)的各個節(jié)點里萝风;一個分片 是一個底層的 工作單元 嘀掸,它僅保存了全部數(shù)據(jù)中的一部分;一個分片是一個 Lucene 的實例规惰,它本身就是一個完整的搜索引擎睬塌;
故障轉(zhuǎn)移---整個節(jié)點內(nèi)分片的平移
在集群中添加節(jié)點后,所有新近被索引的文檔都將會保存在主分片上歇万,然后被并行的復(fù)制到對應(yīng)的副本分片上揩晴。這就保證了我們既可以從主分片又可以從副本分片上獲得文檔。
水平擴容---節(jié)點內(nèi)某一個或多個分片的平移
為提高服務(wù)器資源的利用率贪磺,提高集群響應(yīng)水平而降資源按分片分攤到不同的集群文狱;
性能調(diào)優(yōu)點
主分片的數(shù)目在索引創(chuàng)建時就已經(jīng)確定了下來。實際上缘挽,這個數(shù)目定義了這個索引能夠 存儲 的最大數(shù)據(jù)量瞄崇。(實際大小取決于你的數(shù)據(jù)、硬件和使用場景壕曼。) 但是苏研,讀操作——搜索和返回數(shù)據(jù)——可以同時被主分片 或 副本分片所處理,所以當(dāng)你擁有越多的副本分片時腮郊,也將擁有越高的吞吐量摹蘑。
故障響應(yīng)
而集群必須擁有一個主節(jié)點來保證正常工作,所以主節(jié)點發(fā)生的第一件事情就是選舉一個新的主節(jié)點轧飞;如果其它節(jié)點上存在著原來主節(jié)點的所有分片的副本衅鹿,那么系統(tǒng)將不會受到影響。