ElasticSearch 優化指南

2021-10-03 15:19:55 字數 1047 閱讀 3982

注意cpu核數,cpu的核數將影響thread pool,也就是和檢索與索引的執行緒池有關,建議cpu在16核+;

根據需要設定索引和type,因為高版本(6.0+)index裡面只能有乙個type,所以建議在低版本裡面即採用這一設定,並且這裡也要考慮到版本迭代裡面的父子文件。

合理設定分片和副本,分片一般大於等於節點數,副本根據需要進行設定,分片容量一般不要大於30gb。

冷熱資料分離

犧牲近實時搜尋,修改refresh的時間。一般情況下refresh_interval設定為1s,表示1秒後即可搜尋。如果設定時間長,或者-1(-1表示關閉自動重新整理),可以優化索引。

減少副本,在索引前將副本設定為0,生成後將其還原。

能批量就不要單條插入,盡量多使用bulk。

少用wildcard進行查詢,tb+的資料上,很容易卡死。

中文使用match匹配是不準確的,使用matchphrace短語匹配更加準確,其實使用term的查詢代價更小,只是對於中文搜尋不太準確。

如果該字段不需要計算相關度評分,使用filter更加迅速。

query和filter對比:

query是有兩個操作:查詢和計算相關度,而filter是僅僅是判斷是否滿足條件,並且es會自動快取過濾器的內容。

過濾上下文是在使用filter引數時候的執行環境,比如在bool查詢中使用must_not或者filter。

盡可能避免深度分頁。

深度分頁的問題在於資料時儲存在分片上的,也就是說查第100頁的10條資料,必須在5個分頁上查出前1000條的資料,將這些5000資料進行排序,取其前10條資料,可想而知,分頁越往後效率越低。

並且當 from + size > max_result_window (es設定,預設10000)時,es 將返回錯誤。

聚合分頁size的合理設定。es處於效能考慮,不支援聚合分頁。

方案一:每次取聚合結果,拿到記憶體中分頁返回。

方案二:scroll結合scroll after集合redis實現。

不要使用指令碼

ElasticSearch 效能優化

getrace系統的所有搜尋都是用elasticsearch來做的,在使用elasticsearch的過程中碰到了一些問題,這裡記錄一下。一 在查詢呼叫鏈的時候。整體資料量大 每天60g 7 420g 但是結果集比較少 只有幾百行 的時候,查詢時間經常會超過1分鐘,慢的甚至需要5,6分鐘.優化1 經...

ElasticSearch 優化配置

索引建立優化 house properties title price area createtime lastupdatetime cityenname regionenname direction distancetosubway subwaylinename subwaystationname...

elasticsearch效能優化

elasticsearch查詢依賴作業系統的頁面快取記憶體 file system cache 因此除了需要給elasticsearch的jvm分配足夠的記憶體以外,還需要給頁快取預留記憶體。例如單機32g記憶體,給jvm配置16g記憶體後,剩餘16g預留記憶體不需要額外配置,也不要讓其他程序占用這...