ElasticSearch 基於配置文件、settings設置、mapping設置的性能優化
配置文件優化設置
elasticsearch.yml
thread_pool: --bulk使用的線程池方式爲fix
bulk:
size: 5 --bulk併發線程總數(與CPU核數相關,最大爲CPU核數+1)
queue_size: 1000 --線程池隊列總數(越大耗費JVM內存越高)
ES索引settings優化設置
index.refresh_interval: 30s --重要(寫入性能很大比例靠該屬性)
index.number_of_shards: 5 --默認配置
index.number_of_replicas: 1 --默認配置(將該屬性置爲0,寫入性能也會有提升)
index.translog.flush_threshold_size: 1gb --(事務日誌最大量,只有到達該數據量時才進行落盤操作(flush))
index.translog.sync_interval: 30s --事務日誌落盤頻率
index.translog.durability: async --(translog)異步落盤(會有數據丟失的風險,生產環境最好使用默認值)
index.merge.scheduler.max_thread_count --減少磁盤爭用(ssd可以忽略該條設置)
ES索引mappings配置
- 關閉分詞
- 關閉_all
- 關閉_source(根據情況進行設置,關閉後元數據無法通過不同查詢得到;只能聚合得到數據)
- 將所有string類型的字段設置爲keyword