(1)文檔被路由到碎片是什麽意思?
壹個索引的數據將被分成多個分片。所以壹個文檔只能存在於壹個碎片中。當客戶機創建壹個文檔時,es需要決定這個文檔放在這個索引的哪個碎片上。這個過程叫做文檔路由,也就是數據路由。
(2)路由算法:shard = hash(路由)% NUMBER _ of _ primary _ shards
例如,壹個索引有三個主要碎片,P0,P1,P2。
每次添加、刪除或更改文檔時,都會帶來壹個路由號。默認為該單據的id(可以手工指定,也可以自動生成)。ES會把這個路由值傳入壹個哈希函數,產生壹個路由值的哈希值,hash(routing) = 21。那麽哈希函數產生的值就是這個索引的主分片數的余數,21% 3 = 0。ES只是把這個文檔放在P0上。(由此可以知道為什麽primary_shards的數量是固定的。)
(3)手動指定路由:_ id或自定義路由值。
默認路由是_id,或者您可以在發送請求時手動指定路由,例如
具體操作請參考官方文件。
_ routing field | Elastic search Reference[7.6]| Elastic/article/110