ES基本操作命令
- transient 临时:这些设置在集群重启之前一直会生效。一旦整个集群重启,这些设置就被清除。
- persistent 永久:这些设置永久保存,除非再次被手动修改。是将修改持久化到文件中,重启之后也不影响。
1、查看集群配置
GET _cluster/settings
2、禁用与启用自平衡
PUT _cluster/settings
{
"persistent" : {
"cluster.routing.rebalance.enable": "none"
}
}
PUT _cluster/settings
{
"persistent" : {
"cluster.routing.rebalance.enable": "all"
}
}
3、禁用与启用自分片
all - (默认值)允许为所有类型的分片分配分片。
primaries - 仅允许分配主分片的分片。
new_primaries -仅允许为新索引的主分片分配分片。
none - 任何索引都不允许任何类型的分配分片。
PUT _cluster/settings
{
"persistent" : {
"cluster.routing.allocation.enable": "none"
}
}
PUT _cluster/settings
{
"persistent" : {
"cluster.routing.allocation.enable": "all"
}
}
4、配置分片迁移并发数
①节点级别
PUT _cluster/settings
{
"persistent": {
"cluster.routing.allocation.node_concurrent_recoveries": 2
}
}
②集群级别
PUT _cluster/settings
{
"persistent": {
"cluster.routing.allocation.cluster_concurrent_rebalance": 8}
}
5、退役节点
_ip:通过IP
_name:通过节点名
_host:通过主机名
①指定退役节点IP
PUT _cluster/settings
{
"persistent" : {
"cluster.routing.allocation.exclude._ip" : "1.1.1.1,2.2.2.2"
}
}
②指定保留节点IP,至少符合一项
PUT _cluster/settings
{
"persistent" : {
"cluster.routing.allocation.include._ip" : "1.1.1.1,2.2.2.2"
}
}
③指定保留节点IP,指定项全部符合
PUT _cluster/settings
{
"persistent" : {
"cluster.routing.allocation.require._ip" : "1.1.1.1,2.2.2.2"
}
}
6、清空配置为默认值
PUT _cluster/settings
{
"persistent": {
"indices.recovery.max_bytes_per_sec": null}
}
7、开启慢查询
PUT /_settings
{
"index.search.slowlog.level": "debug",
"index.search.slowlog.threshold.query.warn": "5s",
"index.search.slowlog.threshold.query.info": "3s",
"index.search.slowlog.threshold.query.debug": "1s",
"index.search.slowlog.threshold.query.trace": "500ms",
"index.search.slowlog.threshold.fetch.warn": "1s",
"index.search.slowlog.threshold.fetch.info": "800ms",
"index.search.slowlog.threshold.fetch.debug": "500ms",
"index.search.slowlog.threshold.fetch.trace": "200ms"
}
8、强制重新分配集群中的UNASSIGEMED Shards
POST _cluster/reroute?retry_failed=true
9、设置index恢复时每秒最大字节数限制,默认40mb
PUT _cluster/settings
{
"persistent": {
"indices.recovery.max_bytes_per_sec": "100mb"}
}
10、同步刷新
POST _flush/synced
11、设置ES集群允许使用_all或*通配符的方式删除索引,默认不允许,会报“Wildcard expressions or all indices are not allowed”错误。
PUT /_cluster/settings
{
"persistent" : {
"action.destructive_requires_name" : false
}
}
12、 磁盘的三个默认警戒水位线
cluster.routing.allocation.disk.watermark.low 低警戒水位线——默认为磁盘容量的85%。
Elasticsearch不会将分片分配给使用磁盘超过85%的节点。它也可以设置为绝对字节值(如500mb),以防止Elasticsearch在小于指定的可用空间量时分配分片。此设置不会影响新创建的索引的主分片,或者特别是之前任何从未分配过的分片。
cluster.routing.allocation.disk.watermark.high 高警戒水位线——默认为磁盘容量的90%。
Elasticsearch将尝试从磁盘使用率超过90%的节点重新分配分片。它也可以设置为绝对字节值,以便在节点小于指定的可用空间量时将其从节点重新分配。此设置会影响所有分片的分配,无论先前是否分配。
cluster.routing.allocation.disk.watermark.flood_stage 洪水警戒水位线——默认为磁盘容量的95%。
Elasticsearch对每个索引强制执行只读索引块(index.blocks.read_only_allow_delete)。这是防止节点耗尽磁盘空间的最后手段。一旦有足够的可用磁盘空间允许索引操作继续,就必须手动释放索引块。
cluster.info.update.interval Elasticsearch应该多久检查一次群集中每个节点的磁盘使用情况。 默认为30秒。
磁盘的分片分配综合样例配置如下:
PUT _cluster/settings
{
"transient": {
"cluster.routing.allocation.disk.watermark.low": "100gb",
"cluster.routing.allocation.disk.watermark.high": "50gb",
"cluster.routing.allocation.disk.watermark.flood_stage": "10gb",
"cluster.info.update.interval": "1m"
}
}
13、ES迁移数据
①先扩容,集群退役节点
②logstash等工具迁移
③reindex
从远程ES进行reindex
需要在配置文件中设置白名单:
reindex.remote.whitelist: ["192.168.1.2:9200"]
14、查看ES异常状态
GET _cluster/allocation/explain