美文网首页
ES集群性能优化及维护

ES集群性能优化及维护

作者: 盗生一 | 来源:发表于2020-09-23 14:29 被阅读0次

原文地址:https://www.jianshu.com/p/59a28dd7ae6b
ES集群性能优化及维护
注:集群 elasticsearch 版本为 v7.2.1。
1.ES索引刷新间隔设置:
index.refresh_interval 刷新时间,默认1

PUT index(_all)/_settings?preserve_existing=false

{
  "index.refresh_interval": "15s"
}

2.ES索引备份数设置:
index.number_of_replicas 备份数,默认1

PUT index/_settings?preserve_existing=false

{
  "index.number_of_replicas": "1"
}

3.ES索引分片数设置:
index.number_of_shards:分片数,默认1,最大:1024
注:在创建索引时设置!

例:
    {
      "settings": {
        "index": {
          "number_of_shards": 5,
          "number_of_replicas": 1,
          "refresh_interval": "5s",
          "max_result_window": "50000"
        }
      }"aliases": {
        "aliase": {}
      },
      "mappings": {}
    }

4.ES搜索返回结果数最大10000条数据设置:
index.max_result_window: 10000 (默认)

PUT _all/_settings?preserve_existing=false

{
  "index.max_result_window": "50000"
}

5.ES搜索聚合最大桶数10000设置:
search.max_buckets:10000(默认)

方式①:配置文件 elasticsearch.yml
    增加配置项:

    # 单个查询最大的桶数,默认10000
    search.max_buckets: 50000


方式②:动态修改该配置项:
    PUT _cluster/settings

    {
      "transient": {
        "search.max_buckets": "50000"
      }
    }

6.ES集群设置删除性操作不允许使用_all及通配符设置:
PUT /_cluster/settings

{
  "persistent": {
    "action.destructive_requires_name": true
  }
}

7.ES集群总分片数不足,每台机器最大分片数设置:
ES7.0.0版本以上,默认只允许1000个分片。
查询ES集群节点分片数:
_cat/allocation?v

方式①:配置文件 elasticsearch.yml
    增加配置项:

    cluster.max_shards_per_node: 2000


方式②:动态修改该配置项:
    _cluster/settings GET、PUT请求

    {
      "transient": {
        "cluster": {
          "max_shards_per_node":2000
        }
      }
    }

恢复之前默认:

    _cluster/settings GET、PUT请求

    {
      "transient": {
        "cluster": {
          "max_shards_per_node":null
        }
      }
    }

8.ES集群API请求设置与配置文件设置优先级说明:
集群属性设置方式:
(1)API方式设置:
a.临时设置(集群节点全部重启失效):

            {
                "transient" : {
                    "xxx" : "yyy"
                }
            }

        b.永久设置(集群节点全部重启依然生效):

            PUT /_cluster/settings
            {
                "persistent" : {
                    "xxx" : "yyy"
                }
            }

    (2)配置文件设置(集群节点全部重启依然生效):elasticsearch.yml

优先级:

    transient cluster settings > persistent cluster settings >  settings in the elasticsearch.yml configuration file.

9.ES集群状态异常,一直出现UnassignedShards解决方案:
①查询索引分片信息:
GET _cat/shards?v
结果中查找:state 为 UNASSIGNED 的索引。

②当索引无数据写入时可执行关闭、开启索引操作,重新触发索引分片:
    POST index/_close
    POST index/_open

10.ES节点延迟分片分配-临时重启操作:
index.unassigned.node_left.delayed_timeout 默认 1m

PUT _all/_settings

{
  "settings": {
    "index.unassigned.node_left.delayed_timeout": "5m"
  }
}

11.ES节点禁用分片转移-临时重启操作:
PUT _cluster/settings

{
  "transient": {
    "cluster.routing.allocation.enable": "none"
  }
}

恢复分片转移:

PUT _cluster/settings

{
  "transient": {
    "cluster.routing.allocation.enable": "all"
  }
}

12.ES节点手动分片转移-永久下线操作:
PUT _cluster/settings

{
  "transient": {
    "cluster.routing.allocation.exclude._name": "node-1,node-2"
  }
}

重新加入集群:

PUT _cluster/settings

{
  "transient": {
    "cluster.routing.allocation.exclude._name": ""
  }
}

作者:KwokRoot
链接:https://www.jianshu.com/p/59a28dd7ae6b
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关文章

网友评论

      本文标题:ES集群性能优化及维护

      本文链接:https://www.haomeiwen.com/subject/mxcoyktx.html