您好,登錄后才能下訂單哦!
這篇文章主要講解了“elasticsearch路由一個(gè)文檔到一個(gè)分片的方法是什么”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“elasticsearch路由一個(gè)文檔到一個(gè)分片的方法是什么”吧!
當(dāng)索引一個(gè)文檔的時(shí)候,文檔會(huì)被存儲(chǔ)到一個(gè)主分片中。 Elasticsearch 如何知道一個(gè)文檔應(yīng)該存放到哪個(gè)分片中呢?當(dāng)我們創(chuàng)建文檔時(shí),它如何決定這個(gè)文檔應(yīng)當(dāng)被存儲(chǔ)在分片 1
還是分片 2
中呢?
首先這肯定不會(huì)是隨機(jī)的,否則將來(lái)要獲取文檔的時(shí)候我們就不知道從何處尋找了。實(shí)際上,這個(gè)過(guò)程是根據(jù)下面這個(gè)公式?jīng)Q定的:
shard = hash(routing) % number_of_primary_shards
routing
是一個(gè)可變值,默認(rèn)是文檔的 _id
,也可以設(shè)置成一個(gè)自定義的值。 routing
通過(guò) hash 函數(shù)生成一個(gè)數(shù)字,然后這個(gè)數(shù)字再除以 number_of_primary_shards
(主分片的數(shù)量)后得到 余數(shù) 。這個(gè)分布在 0
到 number_of_primary_shards-1
之間的余數(shù),就是我們所尋求的文檔所在分片的位置。
所有的文檔 API( get
、 index
、 delete
、 bulk
、 update
以及 mget
)都接受一個(gè)叫做 routing
的路由參數(shù) ,通過(guò)這個(gè)參數(shù)我們可以自定義文檔到分片的映射。一個(gè)自定義的路由參數(shù)可以用來(lái)確保所有相關(guān)的文檔——例如所有屬于同一個(gè)用戶(hù)的文檔——都被存儲(chǔ)到同一個(gè)分片中。
一個(gè)分片并不是沒(méi)有代價(jià)的。記住:
一個(gè)分片的底層即為一個(gè) Lucene 索引,會(huì)消耗一定文件句柄、內(nèi)存、以及 CPU 運(yùn)轉(zhuǎn)。
每一個(gè)搜索請(qǐng)求都需要命中索引中的每一個(gè)分片,如果每一個(gè)分片都處于不同的節(jié)點(diǎn)還好, 但如果多個(gè)分片都需要在同一個(gè)節(jié)點(diǎn)上競(jìng)爭(zhēng)使用相同的資源就有些糟糕了。
用于計(jì)算相關(guān)度的詞項(xiàng)統(tǒng)計(jì)信息是基于分片的。如果有許多分片,每一個(gè)都只有很少的數(shù)據(jù)會(huì)導(dǎo)致很低的相關(guān)度。
在特定場(chǎng)景下這是一個(gè)容易回答的問(wèn)題,尤其是你自己的場(chǎng)景:
基于你準(zhǔn)備用于生產(chǎn)環(huán)境的硬件創(chuàng)建一個(gè)擁有單個(gè)節(jié)點(diǎn)的集群。
創(chuàng)建一個(gè)和你準(zhǔn)備用于生產(chǎn)環(huán)境相同配置和分析器的索引,但讓它只有一個(gè)主分片無(wú)副本分片。
索引實(shí)際的文檔(或者盡可能接近實(shí)際)。
運(yùn)行實(shí)際的查詢(xún)和聚合(或者盡可能接近實(shí)際)。
基本來(lái)說(shuō),你需要復(fù)制真實(shí)環(huán)境的使用方式并將它們?nèi)繅嚎s到單個(gè)分片上直到它“掛掉。” 實(shí)際上 掛掉 的定義也取決于你:一些用戶(hù)需要所有響應(yīng)在 50 毫秒內(nèi)返回;另一些則樂(lè)于等上 5 秒鐘。
一旦你定義好了單個(gè)分片的容量,很容易就可以推算出整個(gè)索引的分片數(shù)。 用你需要索引的數(shù)據(jù)總數(shù)加上一部分預(yù)期的增長(zhǎng),除以單個(gè)分片的容量,結(jié)果就是你需要的主分片個(gè)數(shù)。
在索引寫(xiě)入時(shí),副本分片做著與主分片相同的工作。新文檔首先被索引進(jìn)主分片然后再同步到其它所有的副本分片。增加副本數(shù)并不會(huì)增加索引容量。
無(wú)論如何,副本分片可以服務(wù)于讀請(qǐng)求,如果你的索引也如常見(jiàn)的那樣是偏向查詢(xún)使用的,那你可以通過(guò)增加副本的數(shù)目來(lái)提升查詢(xún)性能,但也要為此 _增加額外的硬件資源_。
一個(gè)擁有兩個(gè)主分片一份副本的索引可以在四個(gè)節(jié)點(diǎn)中橫向擴(kuò)展
通過(guò)調(diào)整副本數(shù)來(lái)均衡節(jié)點(diǎn)負(fù)載
感謝各位的閱讀,以上就是“elasticsearch路由一個(gè)文檔到一個(gè)分片的方法是什么”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)elasticsearch路由一個(gè)文檔到一個(gè)分片的方法是什么這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。