Elasticsearch 分片调整流程

背景

Elasticsearch 版本 7.4.0

1. 禁用自动分配分片

PUT _cluster/settings
{
  "persistent": {
    "cluster": {
      "routing": {
        "allocation.enable": "none"
      }
    }
  }
}

cluster.routing.allocation.enable 的默认值为 all;
persistent 表示当前修改的配置永久生效;

先禁用 ES 的自动分片调整功能, 防止在手动调整分片的时候, 又触发自动调整机制, 导致分片分配混乱;

2. 手动移动分片

2.0. 移动单个分片

POST _cluster/reroute
{
  "commands": [
    {
      "move": {
        "index": "<my-index>",
        "shard": <shard-number>,
        "from_node": "node_01",
        "to_node": "node_02"
      }
    }
  ]
}

注意: index 不可以用索引的别名 alias, 必须用实际索引名称
将分片 <shard-number> 从节点 node_01 移动到 node_02, 会触发 cluster.routing.allocation.enable 自动将 node_02 的其他一个分片移动到 node_01; 所以手动移动分片时, 需要先禁用自动分配分片;

2.1. 根据 IP 禁用分片

PUT _cluster/settings
{
  "persistent": {
    "cluster": {
      "routing": {
        "allocation.exclude": {
          "_ip": "<ip1>,<ip2>"
        }
      }
    }
  }
}

如果原来这些 ip 机器上已经有分片数据了, 执行该命令后, 这些分片数据会自动移动到其他机器上;
_ip 可配置多个 IP 地址, 以逗号分隔; 支持 * 匹配符;

2.2. 根据 IP 分配分片

PUT _cluster/settings
{
  "persistent": {
    "cluster": {
      "routing": {
        "allocation.include": {
          "_ip": "<ip1>,<ip2>"
        }
      }
    }
  }
}

与 2.1 相反, include._ip 要求索引分配的节点必须满足其中一个条件(逗号分隔);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

01码匠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值