1. 程式人生 > >ES容易忽視的集群配置

ES容易忽視的集群配置

狀況 全部 ngs -i 20M https ransient shu 過程

一 前言

目前生產系統由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。

![網上借來圖](https://upload-images.jianshu.io/upload_images/1737506-22b96a5bd4aec67d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
參考網上說明:
***上圖是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 ```

3其他說明

ES關閉一個索引的速度非常快,嘗試過關閉一個1T大小的索引,耗時只要十幾秒,打開也差不多的時間,只是在打開的時候回存在著集群瞬間變紅,因為分片的分配需要過程。

ES容易忽視的集群配置