溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

elasticsearch路由一個(gè)文檔到一個(gè)分片的方法是什么

發(fā)布時(shí)間:2021-12-29 13:51:28 來(lái)源:億速云 閱讀:217 作者:iii 欄目:云計(jì)算

這篇文章主要講解了“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)景:

  1. 基于你準(zhǔn)備用于生產(chǎn)環(huán)境的硬件創(chuàng)建一個(gè)擁有單個(gè)節(jié)點(diǎn)的集群。

  2. 創(chuàng)建一個(gè)和你準(zhǔn)備用于生產(chǎn)環(huán)境相同配置和分析器的索引,但讓它只有一個(gè)主分片無(wú)副本分片。

  3. 索引實(shí)際的文檔(或者盡可能接近實(shí)際)。

  4. 運(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)性能,但也要為此 _增加額外的硬件資源_。

elasticsearch路由一個(gè)文檔到一個(gè)分片的方法是什么

一個(gè)擁有兩個(gè)主分片一份副本的索引可以在四個(gè)節(jié)點(diǎn)中橫向擴(kuò)展

elasticsearch路由一個(gè)文檔到一個(gè)分片的方法是什么

通過(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)注!

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI