您好,登錄后才能下訂單哦!
怎么實現ElasticSearch優化,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
盡量不要把數據結構不同的數據放到同一索引中,并且可以考慮將數據量較少的集合創建較少的分片存儲。當然若數據之間存在父子關系則例外,畢竟父子關系的數據不能存儲在不同的索引當中。
1、盡量使用批量索引
2、客戶端盡量使用多線程批量索引
3、增加刷新機制的間隔 默認是1s -1代表禁用Es從數據索引到能不查詢整個過程默認為1s,使用index.refresh_interval參數控制。若對數據的實時性要求不高的話,可適當調整該參數到業務系統可接受的范圍。在該間隔時間內es會強制創建一個新的segment(段),時間間隔越大則創建的段也會越大,也減小了后續字段合并段的壓力(段其實的lucene底層的數據結構,詳細可查詢lucene與segment的關系)。
4、數據初始索引時禁用刷新和副本機制若有一大批數據需要索引的時候(前提條件),由于刷新和副本機制對數據索引性能影響較大,可以將index.refresh_interval設置為-1,將index.number_of_replicas設置為0以禁用該兩機制。直到本次數據全部索引完成后再將這兩個參數調整至合理的值,然而應該明白性能與數據安全總是不能同時得到滿足,完全看業務數據的重要性。
5、禁止內存交換
暫時禁用交換 sudo swapoff - a
永久禁用它 需要編輯該/etc/fstab文件并注釋掉包含該單詞的所有行swap
6、文件系統緩存的內存不能低于服務器的一半文件系統緩存將被用來緩沖輸入/輸出操作,這對于es來說非常的重要,要求內存不能少于服務器內存的一半,即es的jvm heap的值設置應該小于服務器內存的一半。
7、盡量使用es自動生成的id作為es的document id應該知道其作用第一是確定文檔的唯一性,第二默認情況下使用id作為route值計算文檔應該被分配到哪個shard,同時也是生成uid的成員。若索引時制定id的情況下,會先檢測其唯一性,其代價是比較大的,并且隨著索引文檔數的增加消耗會越來越大,若沒有業務需要最好使用自動生成的id(會跳過檢查過程)。
9、索引緩存的大小
10、string類型字段不分詞
精細設置全文域:string類型字段默認會分詞,不僅會額外占用資源,而且會影響創建索引的速度。所以,把不需要分詞的字段設置為not_analyzed
11、 設置段合并的線程數量 :
curl -XPUT 'your-es-host:9200/nginx_log-2018-03-20/_settings' -d '{
"index.merge.scheduler.max_thread_count" : 1
}'
12、不用開啟http服務。將其中的配置 參數這樣設置:http.enabled: false
13、Elastic官方文檔建議:一個Node中一個索引最好不要多于三個shards.配置total_shards_per_node參數,限制每個index每個節點最多分配多少個發片.
14、分片(Shard):一個索引會分成多個分片存儲,分片數量在索引建立后不可更改,推薦【分片數*副本數=集群數量】
14、 段和合并Elasticsearch 默認設置在這塊比較保守:不希望搜索性能被后臺合并影響。不過有時候(尤其是 SSD,或者日志場景)限流閾值太低了。
默認值是 20 MB/s,對機械磁盤應該是個不錯的設置。如果你用的是 SSD,可以考慮提高到 100–200 MB/s。測試驗證對你的系統哪個值合適:
PUT /_cluster/settings
{
"persistent" : {
"indices.store.throttle.max_bytes_per_sec" : "100mb"
}
}
可以增大index.translog.flush_threshold_size參數,默認是200M,可以增大到如1GB。
增大這個參數可以允許translog在flush前存放更大的段(segment);更大的段的創建會減少flush的頻率,
并且更大的段合并越少,會減少磁盤IO,索引性能更高。
1、 查詢緩存
分片查詢緩存的主要目的是緩存聚合,提示詞和命中數(不會緩存返回的文檔)
如果想要開啟mastering索引的查詢緩存,可以執行類似下面的操作
PUT /mastering/_settings
{ "index.requests.cache.enable": true }
2、 查詢緩存默認使用節點堆棧的1%內存,可以通過下列方式對該值進行設置:
indices.requests.cache.size: 2%
關于怎么實現ElasticSearch優化問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。