一 前言
目前生產(chǎn)系統(tǒng)由Solr轉(zhuǎn)ES了油够,在這邊就記錄下在使用過程中容易忽視的配置吧蚁袭,其實(shí)我也是才用,如果有什么錯誤的地方石咬,多指正揩悄。
二、配置
1鬼悠、ES的段合并是限速的
默認(rèn)是20MB/s 删性,如果是SSD磁盤建議增大:
PUT /_cluster/settings
{
"persistent" : {
"indices.store.throttle.max_bytes_per_sec" : "100mb"
}
}
如果臨時導(dǎo)入數(shù)據(jù)先可以不要合并,再打開的時候合并:
PUT /_cluster/settings
{
"transient" : {
"indices.store.throttle.type" : "none"
}
}
導(dǎo)入數(shù)據(jù)完成none改成merge焕窝。
2蹬挺、fieldData 數(shù)據(jù)緩存限制
ES配置中提到的FieldData指的是字段數(shù)據(jù)。當(dāng)排序(sort)它掂,統(tǒng)計(jì)(aggs)時汗侵,ES把涉及到的字段數(shù)據(jù)全部讀取到內(nèi)存(JVM Heap)中進(jìn)行操作。相當(dāng)于進(jìn)行了數(shù)據(jù)緩存,提升查詢效率晰韵,而且默認(rèn)是不清除的发乔,容易造成OOM。
參考網(wǎng)上說明:
***上圖是ES的JVM Heap中的狀況雪猪,可以看到有兩條界限:驅(qū)逐線 和 斷路器栏尚。當(dāng)緩存數(shù)據(jù)到達(dá)驅(qū)逐線時,會自動驅(qū)逐掉部分?jǐn)?shù)據(jù)只恨,把緩存保持在安全的范圍內(nèi)译仗。當(dāng)用戶準(zhǔn)備執(zhí)行某個查詢操作時,斷路器就起作用了官觅,緩存數(shù)據(jù)+當(dāng)前查詢需要緩存的數(shù)據(jù)量到達(dá)斷路器限制時纵菌,會返回Data too large錯誤,阻止用戶進(jìn)行這個查詢操作休涤。 ***
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
}
}
禁止使用通配符,禁止的目的是為了誤刪除功氨。
默認(rèn)情況下序苏,可以通過以下方法刪除所有的索引:
curl -XDELETE http://localhost:9200/_all
curl -XDELETE http://localhost:9200/*
_all ,* 通配所有的索引 。
如果需要一次刪除多個索引 可以通過將兩個索引名都寫進(jìn)去捷凄,中間用逗號分隔忱详。
比如:
curl -XDELETE http://localhost:9200/twitter,my_index
其他說明
ES關(guān)閉一個索引的速度非常快跺涤,嘗試過關(guān)閉一個1T大小的索引匈睁,耗時只要十幾秒,打開也差不多的時間桶错,只是在打開的時候回存在著集群瞬間變紅软舌,因?yàn)榉制姆峙湫枰^程。