在我制作一個具有復雜嵌套聚合的搜索查詢時,我試圖找到將Elasticsearch Spring Data與 Elasticsearch HighLevelClient 的性能進行比較的基準。
但我發現的唯一一件事是,如果您需要 CRUD 操作,使用 spring 資料和其他一些功能作為自動配置會更容易。但它們都與性能無關。
我想知道你們中是否有人使用過并測驗了它們的性能?是否有任何技術原因使其中之一在此類查詢中更快?
uj5u.com熱心網友回復:
這里最重要的部分是確保您獲得正確的基礎查詢。我們最近遇到了一個案例,錯誤的設定使我們的性能降低了近 10 倍。Spring Data 使用高級 Rest 客戶端,所以我通常不期望開銷或很小的開銷;如果基礎查詢相同。框架差異可能足夠小,我會優先考慮開發速度和熟悉度。
我們的錯誤是回傳聚合中的底層檔案,這是要發送/(反)序列化的更多資料,并且也不會使用快取 - 這使我們的聚合產生了 400 毫秒與 40 毫秒的差異(當我們點擊快取)。
編輯 PJMeisch(希望你不介意@xeraa),不需要額外的答案:
如前所述,Spring Data Elasticsearch 使用 Elasticsearch RestHighLevelClient(稍后將使用新的 Elasticsearch 客戶端)并創建聚合查詢,您需要使用NativeSearchQuery使用 Elasticsearch 的查詢構建器構建查詢的位置。所以直接使用 RestHighLevelClient 構建查詢是一樣的。
正如@xeraa 已經提到的,如果您只需要 aggs 而不是查詢資料,請確保不回傳源檔案,在 Spring Data Elasticsearch 中,您可以使用NativeSearchQueryBuilder.withMaxResults(0). 然后像往常一樣將查詢傳遞給該ElasticsearchOperations.search()方法。
Spring Data Elasticsearch 不對回傳的聚合進行任何決議,您必須在那里做與直接使用客戶端相同的操作。
所以我認為 Spring Data Elasticsearch 不會導致性能問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/401116.html
標籤:表现 弹性搜索 弹簧数据弹性搜索 elasticsearch-高级-restclient
