ElasticSearch 文件路由的原理

2022-06-08 10:09:09 字數 738 閱讀 2175

elasticsearch集群環境下新增文件如何確認該文件被分配到哪個分片中?

路由演算法:

⾸先這肯定不會是隨機的,否則將來要獲取⽂檔的時候我們就不知道從何處尋找了。實際上,這個過程是根據下⾯這個公式決定的:

shard = hash(routing) % number_of_primary_shards

routing 是⼀個可變值,預設是⽂檔的 _id ,也可以設定成⼀個⾃定義的值。 routing通過 hash 函式⽣成⼀個數字,然後這個數字再除以 number_of_primary_shards (主分

⽚的數量)後得到 餘數 。這個分布在 0 到 number_of_primary_shards-1 之間的餘數,就是我們所尋求的⽂檔所在分⽚的位置。

這就解釋了為什麼我們要在建立索引的時候就確定好主分⽚的數量 並且永遠不會改變這個數量:

因為如果數量變化了,那麼所有之前路由的值都會⽆效,⽂檔也再也找不到了。

新增⼀個⽂檔(指定id)

put /nba/_doc/1

檢視⽂檔在哪個分⽚上

get /nba/_search_shards?routing=1

}, "z65hwe_rr_efa4yj3n8shq" :

} },

"indices" :

}, "shards" : [ [

}, } ]

]}

ElasticSearch 檢索文件

現在elasticsearch中已經儲存了一些資料,我們可以根據業務需求開始工作了。第乙個需求是能夠檢索單個員工的資訊。這對於elasticsearch來說非常簡單。我們只要執行http get請求並指出文件的 位址 索引 型別和id既可。根據這三部分資訊,我們就可以返回原始json文件 檢索命令如...

Elasticsearch 文件操作

1.elasticserach api 操作 elasticsearch rest api遵循的格式為 curl x 檢查es版本資訊 http ip 9200 檢視集群是否健康 http ip 9200 cat health?v 檢視節點列表 http ip 9200 cat nodes?v 列出...

ElasticSearch 文件儲存

確定shard的公式 shard hash routing number of primary shardsrouting 預設是文件的 id 也可以設定成乙個自定義的值。因此要在建立索引的時候就確定好主分片的數量,並且永遠不會改變這個數量,因為如果數量變化了,那麼所有之前路由的值都會無效。每個節點...