ES優化總結(特別是在bulk大量資料到ES的時候),持續續更新中。。。。

後開啟撒打發了發表於2017-11-22

1、refresh時間間隔

優化點: 減少重新整理頻率,降低潛在的寫磁碟效能損耗, 預設的重新整理時間間隔是1s,對於寫入量很大的場景,這樣的配置會導致寫入吞吐量很低,適當提高重新整理間隔,可以提升寫入量,代價就是讓新寫入的資料在60s之後可以被搜尋,新資料可見的及時性有所下降。
在bulk大量資料到ES叢集的時候可以關閉重新整理頻率,把其值設定為-1就是關閉了重新整理頻率,在匯入完之後設定成合理的值即可,例如30s或者60s即可。

curl -XPUT '192.168.2.181:9200/index/_settings?pretty' -d '
{
    "index" : {
        "refresh_interval" : "-1"
    }
}'

2、replica數目設定

在bulk大量資料到ES叢集的可以把副本數設定為0,在資料匯入完成之後再設定為1或者你叢集的適合的數目。

curl -XPUT '192.168.2.181:9200/index/_settings?pretty' -d '
{
    "index" : {
        "number_of_replicas" : 0
    }
}'

3、merge相關引數

參考官網建議:https://www.elastic.co/guide/en/elasticsearch/reference/1.7/index-modules-merge.html"index.merge.policy.floor_segment": "100mb"
"index.merge.scheduler.max_thread_count": "1"
"index.merge.policy.max_merged_segment":"100m"

curl -XPUT '192.168.2.181:9200/index/_settings?pretty' -d '
{
 "index.merge.policy.floor_segment": "100mb",
 "index.merge.scheduler.max_thread_count": "1",
 "index.merge.policy.max_merged_segment":"100m"
}'

4、Translog優化建議 參考官網:https://www.elastic.co/guide/en/elasticsearch/reference/1.7/index-modules-translog.html#index-modules-translog

{
   "index.translog.flush_threshold_size": "100m"
}

5、修改配置檔案調整ES的JVM記憶體大小

這個值不能超過32g,一般機器好點設定成十幾個g速度就非常快了。具體要看自己機器的記憶體(使用free命令檢視,千萬不要超過自己機器記憶體啦,balala..)

vim config/jvm.options

-Xms12g
-Xmx12g

6、去掉mapping中_all欄位

Index中預設會有_all這個欄位,預設會把所有欄位的內容都拷貝到這一個欄位裡面,這樣會給查詢帶來方便,但是會增加索引時間和索引尺寸。

"_all":{"enabled":false}

例如:

{
    "myindex":{
        "mappings":{
            "snapshot":{
                "_all":{
                    "enabled":false
                },
                "properties":{
                    "AltWeightedAvgBidPx":{
                        "type":"long"
                    },
                    "AltWeightedAvgOfferPx":{
                        "type":"long"
                    }
                }
            }
        }
    }
}

7、

相關文章