软件环境
elasticsearch 2.4.1
elasticsearch 6.2.4
变更设置
动态更新 API 有两种工作模式:
- 临时(Transient)
这些变更在集群重启之前一直会生效。一旦整个集群重启,这些配置就被清除。
- 永久(Persistent)
这些变更会永久存在直到被显式修改。即使全集群重启它们也会存活下来并覆盖掉静态配置文件里的选项。
PUT /_cluster/settings
{
"persistent" : {
"discovery.zen.minimum_master_nodes" : 2
},
"transient" : {
"indices.store.throttle.max_bytes_per_sec" : "50mb"
}
}
查看集群配置
支持:ES 6.2.4 ES 2.4.1
get _cluster/settings
{}
修改索引副本数
支持:ES 6.2.4 ES 2.4.1
put /索引名称/_settings
{
"number_of_replicas": 4
}
限制集群节点分片数
支持:ES 6.2.4 ES 2.4.1
put _cluster/settings
{
"transient": {
"cluster.routing.allocation.total_shards_per_node": "100"
}
}
备注:限制每个节点100个分片,当节点分片超过100后,移动分片超出限制提示出错
限制索引节点分片数
支持:ES 6.2.4 ES 2.4.1
put 索引名称/_settings
{
"transient": {
"index.routing.allocation.total_shards_per_node": "3"
}
}
备注:在索引创建后,只能在索引关闭状态下才能使用。更新成功后,如果修改索引副本数量,超过每个节点的分片数量,会出现不能分配。
迁移节点分片
支持:ES 6.2.4 ES 2.4.1
put _cluster/reroute
{
"commands": [
{
"move": {
"index": "索引名称",
"shard": 3,
"from_node": "app04",
"to_node": "app01"
}
}
]
}
排除节点
支持:ES 6.2.4 ES 2.4.1
put _cluster/settings
{
"transient" : {
"cluster.routing.allocation.exclude._name" : "app02,app03"
}
}
延迟副本的重新分配
支持:ES 6.2.4 ES 2.4.1
PUT /_all/_settings
{
"settings": {
"index.unassigned.node_left.delayed_timeout": "10m"
}
}
备注:解决这种瞬时服务器中断的问题,Elasticsearch 可以推迟分片的分配集群会等待几分钟来查看节点是否会重新加入,如果这个节点在此期间重新加入,重新加入的节点会保持其现有的分片数据,不会触发新的分片分配。
延迟分配不会阻止副本被提拔为主分片。集群还是会进行必要的提拔来让集群回到 yellow状态。缺失副本的重建是唯一被延迟的过程。
禁止分片分配
支持:ES 6.2.4 ES 2.4.1
PUT _cluster/settings
{
"transient": {
"cluster.routing.allocation.enable": "none"
}
}all - (默认值)允许为所有类型的分片分配分片。
primaries - 仅允许分配主分片的分片。
new_primaries - 仅允许为新索引的主分片分配分片。
none - 任何索引都不允许任何类型的分片。
备注:
在禁用分片分配的情况下,排除节点,排除的节点上的分片是不会主动分配新分片移动的,
启用分片分配的情况下,才会主动分配新分片移动。
排除的节点不能手工往上移入分片,但是可手工移出分片。
禁止分片平衡
支持:ES 6.2.4 ES 2.4.1
put _cluster/settings
{
"transient": {
"cluster.routing.rebalance.enable": "none"
}
}all - (默认值)允许各种分片的分片平衡。
primaries - 仅允许主分片的分片平衡。
replicas - 仅允许对副本分片进行分片平衡。
none - 任何索引都不允许任何类型的分片平衡。
备注:禁止平衡后,出现分片不均,禁止平衡后,集群增加新的机器,分片不会主动平衡到新的机器上
配置索引冷热节点
ES 6.2.4 写法
put hiskeywordext/_settings
{
"index.routing.allocation.require.box_type": ""
}
ES 2.4.1 写法
put hiskeywordext/_settings
{
"index.routing.allocation.require.tag": ""
}
修改磁盘使用量限制
支持:ES 6.2.4
Put _cluster/settings
{
"transient": {
"cluster.routing.allocation.disk.watermark.low": "80%",
"cluster.routing.allocation.disk.watermark.high": "90%",
"cluster.info.update.interval": "1m"
}
}