elasticsearch 手动控制分片分布
2024-08-25 14:44:05
elasticsearch可以通过reroute api来手动进行索引分片的分配。
不过要想完全手动,必须先把cluster.routing.allocation.disable_allocation参数设置为true,禁止es进行自动索引分片分配,否则你从一节点把分片移到另外一个节点,那么另外一个节点的一个分片又会移到那个节点。
一共有三种操作,分别为:移动(move),取消(cancel)和分配(allocate)。下面分别介绍这三种情况:
移动(move)
把分片从一节点移动到另一个节点。可以指定索引名和分片号。
取消(cancel)
取消分配一个分片。可以指定索引名和分片号。node参数可以指定在那个节点取消正在分配的分片。allow_primary参数支持取消分配主分片。
分配(allocate)
分配一个未分配的分片到指定节点。可以指定索引名和分片号。node参数指定分配到那个节点。allow_primary参数可以强制分配主分片,不过这样可能导致数据丢失。
下面是个简单的例子:
- 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
}
}]
}'
最新文章
- ASP.NET MVC 如何解决“上下文的模型已在数据库创建后发生更改”问题
- SQL SERVER2012秘钥
- Java [leetcode 14] Longest Common Prefix
- Eclipse的安装以及与Tomcat的集成
- JS贪吃蛇游戏
- CMD下查询Mysql中文乱码的解决方法
- ProFTPD 初探
- sql server事物控制
- 201521123086《JAVA程序设计》第一周学习总结
- 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](二)
- Java中的switch语句后面的控制表达式的数据类型
- CodeForces Round #555 Div.3
- 【LOJ 6041】「雅礼集训 2017 Day7」事情的相似度
- 201771010126 王燕《面向对象程序设计(java)》第八周学习总结
- 以编程方式使用 Microsoft Office Visio 2003 ActiveX 控件
- war和war exploded区别
- python 多线程小方法
- python练习册0004题
- python模块(3)
- 【OpenGL】第一个窗口