elasticsearch可以通过reroute api来手动进行索引分片的分配。 
不过要想完全手动,必须先把cluster.routing.allocation.disable_allocation参数设置为true,禁止es进行自动索引分片分配,否则你从一节点把分片移到另外一个节点,那么另外一个节点的一个分片又会移到那个节点。

一共有三种操作,分别为:移动(move),取消(cancel)和分配(allocate)。下面分别介绍这三种情况: 
移动(move) 
把分片从一节点移动到另一个节点。可以指定索引名和分片号。 
取消(cancel) 
取消分配一个分片。可以指定索引名和分片号。node参数可以指定在那个节点取消正在分配的分片。allow_primary参数支持取消分配主分片。 
分配(allocate) 
分配一个未分配的分片到指定节点。可以指定索引名和分片号。node参数指定分配到那个节点。allow_primary参数可以强制分配主分片,不过这样可能导致数据丢失。

下面是个简单的例子:

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

    {

        "commands": [
    {
    "move": {
    "index": "test",
    "shard": 0,
    "from_node": "node1",
    "to_node": "node2"
    },
    "cancel": {
    "index": "test",
    "shard": 0,
    "node": "node1"
    }
    },
    {
    "allocate": {
    "index": "test",
    "shard": 1,
    "node": "node3"
    }
    }
    ]

来个奇葩的 比如es节点所有都挂掉了  恢复的时候主副分片什么的都自动恢复不了,这个时候我们得自己指定 主分片

curl -XPOST 'localhost:9200/_cluster/reroute' -d '{
"commands": [{
"allocate": {
"index": "my-index",
"shard": 4,
"node": "search03",
"allow_primary": 1
}
}]
}'

最新文章

  1. ASP.NET MVC 如何解决“上下文的模型已在数据库创建后发生更改”问题
  2. SQL SERVER2012秘钥
  3. Java [leetcode 14] Longest Common Prefix
  4. Eclipse的安装以及与Tomcat的集成
  5. JS贪吃蛇游戏
  6. CMD下查询Mysql中文乱码的解决方法
  7. ProFTPD 初探
  8. sql server事物控制
  9. 201521123086《JAVA程序设计》第一周学习总结
  10. 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](二)
  11. Java中的switch语句后面的控制表达式的数据类型
  12. CodeForces Round #555 Div.3
  13. 【LOJ 6041】「雅礼集训 2017 Day7」事情的相似度
  14. 201771010126 王燕《面向对象程序设计(java)》第八周学习总结
  15. 以编程方式使用 Microsoft Office Visio 2003 ActiveX 控件
  16. war和war exploded区别
  17. python 多线程小方法
  18. python练习册0004题
  19. python模块(3)
  20. 【OpenGL】第一个窗口

热门文章

  1. chapter 13_0 元方法
  2. UPX3.03+UpolyX.5 Shell v1.0 汉化绿色版
  3. DataTable Javascript Link not working on 2nd page
  4. cookie的简单应用
  5. CodeFroces--Good Bye 2016-B--New Year and North Pole(水题-模拟)
  6. 总结的git操作命令小抄集
  7. ios随机数
  8. php给数组key:value中的key加引号
  9. Oracle小技术集锦
  10. Http Post与Get等