ES容易忽视的集群配置

一 前言

目前生产系统由Solr转ES了,在这边就记录下在使用过程中容易忽视的配置吧,其实我也是才用,如果有什么错误的地方,多指正。

二、配置

1、ES的段合并是限速的

默认是20MB/s ,如果是SSD磁盘建议增大:

PUT /_cluster/settings
{
    "persistent" : {
        "indices.store.throttle.max_bytes_per_sec" : "100mb"
    }
}

如果临时导入数据先可以不要合并,再打开的时候合并:

PUT /_cluster/settings
{
    "transient" : {
        "indices.store.throttle.type" : "none" 
    }
}

导入数据完成none改成merge。

2、fieldData 数据缓存限制

ES配置中提到的FieldData指的是字段数据。当排序(sort),统计(aggs)时,ES把涉及到的字段数据全部读取到内存(JVM Heap)中进行操作。相当于进行了数据缓存,提升查询效率,而且默认是不清除的,容易造成OOM。

ES容易忽视的集群配置_第1张图片
网上借来图

参考网上说明:
***上图是ES的JVM Heap中的状况,可以看到有两条界限:驱逐线 和 断路器。当缓存数据到达驱逐线时,会自动驱逐掉部分数据,把缓存保持在安全的范围内。当用户准备执行某个查询操作时,断路器就起作用了,缓存数据+当前查询需要缓存的数据量到达断路器限制时,会返回Data too large错误,阻止用户进行这个查询操作。 ***

PUT _cluster/settings
{ 
  "persistent" :
  { 
    "indices.breaker.fielddata.limit":"50%", 
    "indices.breaker.request.limit":"40%", 
    "indices.breaker.total.limit":"70%" 
    }
}

3、去掉操作索引匹配符号

PUT /_cluster/settings
{
         "persistent" : {
             "action.destructive_requires_name":true
         }
}

禁止使用通配符,禁止的目的是为了误删除。

默认情况下,可以通过以下方法删除所有的索引:

 curl -XDELETE http://localhost:9200/_all
 curl -XDELETE http://localhost:9200/*

_all ,* 通配所有的索引 。
如果需要一次删除多个索引 可以通过将两个索引名都写进去,中间用逗号分隔。
比如:
curl -XDELETE http://localhost:9200/twitter,my_index

其他说明

ES关闭一个索引的速度非常快,尝试过关闭一个1T大小的索引,耗时只要十几秒,打开也差不多的时间,只是在打开的时候回存在着集群瞬间变红,因为分片的分配需要过程。

你可能感兴趣的:(ES容易忽视的集群配置)