elasticsearch 手動控制分片分佈

elasticsearch能夠經過reroute api來手動進行索引分片的分配。 
不過要想徹底手動,必須先把cluster.routing.allocation.disable_allocation參數設置爲true,禁止es進行自動索引分片分配,不然你從一節點把分片移到另一個節點,那麼另一個節點的一個分片又會移到那個節點。 

一共有三種操做,分別爲:移動(move),取消(cancel)和分配(allocate)。下面分別介紹這三種狀況: 
移動(move) 
把分片從一節點移動到另外一個節點。能夠指定索引名和分片號。 
取消(cancel) 
取消分配一個分片。能夠指定索引名和分片號。node參數能夠指定在那個節點取消正在分配的分片。allow_primary參數支持取消分配主分片。 
分配(allocate) 
分配一個未分配的分片到指定節點。能夠指定索引名和分片號。node參數指定分配到那個節點。allow_primary參數能夠強制分配主分片,不過這樣可能致使數據丟失。 
下面是個簡單的例子: 
node

Java代碼  收藏代碼api

  1. curl -XPOST 'localhost:9200/_cluster/reroute' -d '{  curl

  2.     "commands" : [ {  elasticsearch

  3.         "move" :   ide

  4.             {  url

  5.               "index" : "test""shard" : 0,   spa

  6.               "from_node" : "node1""to_node" : "node2"  索引

  7.             }  it

  8.         },  io

  9.        "cancel" :   

  10.             {  

  11.               "index" : "test""shard" : 0"node" : "node1"  

  12.             }  

  13.         },  

  14.         {  

  15.           "allocate" : {  

  16.               "index" : "test""shard" : 1"node" : "node3"  

  17.           }  

  18.         }  

  19.     ]  

  20. }'  

相關文章
相關標籤/搜索