原文網(wǎng)址:ElasticSearch--分片和副本--原理_IT利刃出鞘的博客-CSDN博客
簡介
說明
本文介紹ES的分片和副本的原理。
粉絲福利:有很多粉絲私信問我有沒有Java的面試及PDF書籍等資料,我整理一下,包含:真實面試題匯總、簡歷模板、PDF書籍、PPT模板等。這些是我自己也在用的資料,面試題是面試官問到我的問題的整理,其他資料也是我自用的,真正實用、靠譜。資料可以從這里免費獲?。嘿Y料地址
什么是分片
Elasticsearch集群允許系統(tǒng)存儲的數(shù)據(jù)量超過單機容量,這是通過shard實現(xiàn)的。在一個索引index中,數(shù)據(jù)(document)被分片處理(sharding)到多個分片上。也就是說:每個分片都保存了全部數(shù)據(jù)中的一部分。
一個分片是一個 Lucene 的實例,它本身就是一個完整的搜索引擎。文檔被存儲到分片內(nèi),但應用程序直接與索引而不是與分片進行交互。
什么是副本
說明
為了解決訪問壓力過大時單機無法處理所有請求的問題,Elasticsearch集群引入了副本策略replica。副本策略對index中的每個分片創(chuàng)建冗余的副本。
副本的作用如下:
1. 提高系統(tǒng)容錯性
當分片所在的機器宕機時,Elasticsearch可以使用其副本進行恢復,從而避免數(shù)據(jù)丟失。
2. 提高ES查詢效率
處理查詢時,ES會把副本分片和主分片公平對待,將查詢請求負載均衡到副本分片和主分片。
副本分片是越多越好嗎?
答案當然是 no ,原因有以下兩點:
(1)多個 replica 可以提升搜索操作的吞吐量和性能,但是如果只是在相同節(jié)點數(shù)目的集群上增加更多的副本分片并不能提高性能,因為每個分片從節(jié)點上獲得的資源會變少,這個時候你就需要增加更多的硬件資源來提升吞吐量。
(2)更多的副本分片數(shù)提高了數(shù)據(jù)冗余量,保證了數(shù)據(jù)的完整性,但是根據(jù)上邊主副分片之間的交互原理可知,分片間的數(shù)據(jù)同步會占用一定的網(wǎng)絡帶寬,影響效率,所以索引的分片數(shù)和副本數(shù)也不是越多越好。
設置分片與副本的方法
創(chuàng)建索引的命令:
PUT /my_temp_index
{
"settings": {
"number_of_shards" : 5,
"number_of_replicas" : 1
}
}
- number_of_shards
- 每個索引的主分片數(shù),默認值是 5 。
- 這個配置在索引創(chuàng)建后不能修改。這里和索引分片的算法有關,因為索引通過取模算法判斷分到哪個分片,如果改變了主分片數(shù)就無法正常查詢之前的索引。
- number_of_replicas
- 每個主分片的副本數(shù),默認值是 1 。
- 這個配置可以修改。
分片示例
示例1:啟動2個ES節(jié)點。創(chuàng)建5個分片,1個副本
結果如下:
也就是:
上圖中,黃色的代表主分片,綠色的是副本??梢园l(fā)現(xiàn),分片與其副本不在同一個節(jié)點內(nèi)。這是非常合理的,因為副本本來就是主分片的備胎,當主分片節(jié)點掛了,另外一個節(jié)點的副本將會充當主分片,如果它們在同一個節(jié)點內(nèi),副本將發(fā)揮不到作用。
示例2:啟動3個ES節(jié)點。創(chuàng)建5個分片,1個副本
文章來源:http://www.zghlxwxcb.cn/news/detail-407087.html
分片的路由原理
見?:ElasticSearch--分片的路由原理_IT利刃出鞘的博客-CSDN博客文章來源地址http://www.zghlxwxcb.cn/news/detail-407087.html
到了這里,關于ElasticSearch--分片和副本--原理的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!