優化查詢 ElasticSearch

2021-10-01 22:55:37 字數 2184 閱讀 6630

elasticsearch使用檔案系統快取提公升查詢效能,最好確保可用記憶體的一半設定到檔案系統快取。

如果是io敏感,那麼最好使用ssd驅動,總是使用本地儲存,不要使用nfs或者smb的檔案系統。儘管amazon的ebs也可以很好工作,但是最好使用本地儲存。

如果是cpu敏感,那麼應該購買更快的cpus。

盡量避免使用joins操作。內嵌和父子關聯使得查詢比較慢。

盡量使用反正規化文件進行查詢。

query_string和multi_match關注的fields越多,那麼查詢越慢。通常技術是複製多個fields的值到乙個field,這樣在查詢時使用這乙個field。可以使用copy-to指令來完成。

下面的例子是合併name和plot的值到新的name_and_plot

put movies

, "name": ,

"plot":

}}}

利用查詢方式優化資料索引的方式,例如,所有文件中包含price欄位,大部分查詢是基於固定範圍進行範圍聚合,那麼通過預索引資料來增加聚合速度。

資料如下:

put index/_doc/1

查詢如下:

get index/_search

, ,]}

}}}

使用price_range欄位來增加聚合速度

put index}}}

put index/_doc/1

然後可以使用price_range欄位進行聚合

get index/_search

}}}

並不是所有數值資料應該對映為數值資料型別,elasticsearch對於range查詢優化像integer或者long的數值字段。但是對於term或其他類term級別的查詢來說,keyword欄位將會有更好的效能。

想isbn或者商品id的identifiers很少使用在range查詢,但是通常會使用在term級別的查詢上。

如果存在下面情況,考慮對映數值identifer為keyword

並不需要使用range查詢來查詢identifier

更快獲取是重要的,在keyword欄位的term查詢比在數值字段的term查詢更快

如果不確定使用哪種資料型別,可以使用multi-field對映資料既到keyword型別,又到數值型別。

在日期欄位中使用now通常是不可快取的,因為範圍一直在變化,但是切換到有邊界的日期會利用到快取。

例如:

put index/_doc/1

get index/_search}}

}}}

上面的查詢可以修改為下面的查詢語句

get index/_search}}

}}}

如果當前時間是16:31:29,那麼range查詢將會包含15:31:00到16:31:59的所有資料,如果多個使用者執行包含相同分鐘資料的查詢,那麼查詢快取會起到很大作用。

除了上述方法,也可以切割查詢到乙個大可快取的部分和乙個小的不可快取的部分,這樣可以利用快取。

get index/_search}},

}},}}

]}}}

}}

但是上面的查詢有時也會使得查詢更慢,因為bool查詢產生的壓力有時會比利用快取帶來的節省更大。

合併唯讀的指標到乙個segment會很好的提公升效能,這些通常是基於時間的指標。僅僅對於當前日期的索引建立新文件,而比較老的指標僅僅是可讀,可以強制合併到乙個segment,很好提公升查詢效能。

不要強制合併正在寫入的指標或者將會改變的指標

全域性常規是一種資料結構,主要是在keyword欄位上執行terms聚合操作。因為elasticsearch並不知道哪個字段使用在terms聚合中,索引他們是懶載入到記憶體中。但是你可以告訴elasticsearch哪些字段可以提前載入到記憶體中。

put index

}}}

如果執行elasticsearch的機器重啟後,檔案系統快取將使空。作業系統載入index的熱資料到記憶體需要一定時間,但是你可以告訴操作哦系統哪些檔案可以提前載入檔案系統快取中。通過使用index.store.preload進行設定

CronJob刪除ElasticSearch日誌

目前在k8s平台內,通過pod掛載hostpath將程式形成的日誌檔案傳輸儲存到宿主機指定目錄上,然後fluentd根據指定目錄去蒐集日誌檔案 json格式 然後通過呼叫elasticsearch 以下簡稱es 的api將日誌儲存到es中,那麼問題來了,日誌檔案大了怎麼清理?1.每個工作節點上的日誌...

windows下的elasticSearch安裝

es官網 進入bin目錄,雙擊elasticsearch.bat 訪問http localhost 9200可訪問 新增ik分詞器 解壓ik分詞器包,放到es安裝目錄的plugins中的analysis ik 資料夾中 新建analysis ik 資料夾 再次啟動elasticsearch.bat,...

同步LDAP資料到ElasticSearch

純python編寫 支援全量同步ldap資料,包括person 使用者 computer 計算機 group 組 多程序 協程實現快速同步 簡單配置即可使用 clone專案到本地 git clone 安裝依賴 cd ldap2es pip install r requirements.txt 修改配...