咱們在不少場景下會用到ES幫助咱們解決搜索問題,可是不少人瞭解只是停留在表面,如何深刻的使用ES,並作針對性的性能優化呢?緩存
當大量的寫任務時,能夠採用批量提交的方案,可是須要考慮每次提交數據量的最優性能,這樣能夠根據網絡狀況,集羣狀況,數據大小控制批量寫入的數量。性能優化
現代服務器上,磁盤每每是系統的最大瓶頸。 而且ES自己是磁盤使用密集型的服務,因此在磁盤能力提高後,集羣總體性能會大幅度提升。服務器
Lucene以段形式存儲數據,當新數據建立索引時,會自動建立一個新段,因此在一個索引文件中包含多個段。數據越多後,索引段越多,須要消耗的文件句柄及cpu就越多。網絡
Lucene後臺服務會按期計算龐大的段合併工做量,因此:併發
Lucene爲提升寫性能會採用延遲寫入方式,只是將數據寫入內存中,當延遲大於1s時,會觸發一次refresh,refresh會把內存中數據以段形式刷新到操做系統文件緩存系統中。工具
數據以段形式刷新到操做系統的文件系統後才能夠進行搜索,因此若是搜索實時性要求不高,能夠增長延遲,能夠減小段數量,下降合併壓力。性能
Translog數量達到512m會觸發一次flush。主要爲了把文件緩存系統中段數據持久化到磁盤,這個過程比較耗時,能夠設置index.translog.flush_threshold_size參數修改緩存數據量,減小刷新次數,好比能夠增長一倍。優化
es的副本能夠保證集羣可用性,提升搜索併發能力,可是下降寫入性能。 由於文檔寫入內容須要同步副本。操作系統
若是大批量導入能夠關閉index.number_of_replicas:0,寫入成功後在開啓副本。線程