es是設計成乙個搜尋引擎的,只擅長返回匹配查詢較少文件,如果需要返回非常多的文件需要使用scroll。
因為es是基於lucene來索引和儲存資料的,所以對稠密的資料更有效。lucene能夠有效的確定文件是通過乙個整數的文件id,無論有沒有資料都會話費乙個位元組儲存id。稀疏主要影響norms和doc_values,一些可以避免稀疏的推薦:
避免將不相關的資料放到相同的索引中
規範的文件結構
使用相同的欄位名來儲存同樣的資料。
避免型別
不用norms和doc_values在稀疏字段並且每個請求不超過幾十m,因為太大會導致記憶體使用過大
多程序或者執行緒,如果看到too_many_requests (429)
和esrejectedexecutionexception
則說明es跟不上索引的速度,當集群的i/o或者cpu飽和就得到了工作者的數量。
index.refresh_interval
預設是1s,可以改成30s以減少合併壓力。
index.refresh_interval to -1 and index.number_of_replicas to 0
快取是用來快取i/o操作的,至少用一般的記憶體來執行es檔案快取。
indices.memory.index_buffer_size
通常是jvm的0.1,確保他足夠處理至多512mb的索引。
至少給可用記憶體的一半到檔案系統快取。
避免鏈結,巢狀會使查詢慢幾倍,而親自關係能使查詢慢幾百倍,所以如果同樣的問題可以通過沒有鏈結的非規範回答就可以提公升速度。
不明覺厲
數值型資料不一定要對映成整形或者長整型
如果實在要使用,就用painless和expressions
不要強勢合併正在寫的索引
index.store.preload
,如果記憶體不是很大會使搜尋變得緩慢。
byte,short,integer,long
half_float,float,double
ElasticSearch 效能優化
getrace系統的所有搜尋都是用elasticsearch來做的,在使用elasticsearch的過程中碰到了一些問題,這裡記錄一下。一 在查詢呼叫鏈的時候。整體資料量大 每天60g 7 420g 但是結果集比較少 只有幾百行 的時候,查詢時間經常會超過1分鐘,慢的甚至需要5,6分鐘.優化1 經...
elasticsearch效能優化
elasticsearch查詢依賴作業系統的頁面快取記憶體 file system cache 因此除了需要給elasticsearch的jvm分配足夠的記憶體以外,還需要給頁快取預留記憶體。例如單機32g記憶體,給jvm配置16g記憶體後,剩餘16g預留記憶體不需要額外配置,也不要讓其他程序占用這...
ElasticSearch效能優化策略
一 伺服器部署演算法的基本思想 1 增加1 2臺伺服器,用於負載均衡節點 elasticsearch的配置檔案中有2個引數 node.master和node.data。這兩個參 數搭配使用時,能夠幫助提供伺服器效能。1.1 node.master false node.data true 該node...