国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ES性能優(yōu)化最佳實踐- 檢索性能提升30倍!

這篇具有很好參考價值的文章主要介紹了ES性能優(yōu)化最佳實踐- 檢索性能提升30倍!。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

????????Elasticsearch是被廣泛使用的搜索引擎技術(shù),它的應用領域遠不止搜索引擎,還包括日志分析、實時數(shù)據(jù)監(jiān)控、內(nèi)容推薦、電子商務平臺、企業(yè)級搜索解決方案以及許多其他領域。其強大的全文搜索、實時索引、分布式性能和豐富的插件生態(tài)系統(tǒng)使其成為了許多不同行業(yè)和領域的首選技術(shù)。
????????雖然Elasticsearch是一款強大的搜索引擎技術(shù),但在超大規(guī)模數(shù)據(jù)檢索中,尤其是在處理大量檢索關鍵詞(150個以上)、對多個字段執(zhí)行檢索并使用腳本排序時,可能會面臨嚴重的性能問題。
????????在我們實際的業(yè)務中,檢索的時間可能到達300秒,無法滿足實時交互需求。本文帶你打開一個新思路。在 千億級數(shù)據(jù)檢索背景下,在 未添加任何資源的情況下,我把性能提升了 30倍,請求時間控制在 10s內(nèi)。多數(shù)請求能在3秒5秒內(nèi)完成。一起來看看我是如何做到的叭。

前言:檢索性能問題?

? ? ? ?

  1. 復雜性查詢的挑戰(zhàn):當涉及大量檢索關鍵詞和多字段檢索時,查詢變得復雜,需要更多計算資源來處理這些復雜的查詢。這會導致性能下降。

  2. 腳本排序開銷:使用腳本排序可以在排序時進行自定義計算,但腳本的執(zhí)行會增加額外的計算負擔,尤其在大規(guī)模數(shù)據(jù)集上。

  3. 分片和節(jié)點負載:Elasticsearch分布式架構(gòu)依賴于分片和節(jié)點,如果查詢請求分布不均勻或某些節(jié)點負載過重,性能問題可能會顯著增加。

  4. 內(nèi)存和磁盤資源:大規(guī)模查詢需要更多的內(nèi)存和磁盤資源來存儲索引和數(shù)據(jù),因此,硬件資源的配置可能成為性能瓶頸。

?

一、綜合排序檢索性能提升

1.1 性能提升效果

優(yōu)化前后響應時間如下圖1所示

ES性能優(yōu)化最佳實踐- 檢索性能提升30倍!,Elasticsearch,ES搜索優(yōu)化,elasticsearch,大數(shù)據(jù),搜索引擎,檢索性能優(yōu)化

圖1

1.1.1 性能對比說明

  1. 其中橫軸為普通檢索場景,由檢索時間范圍和檢索關鍵詞個數(shù)組成。縱軸是請求平均響應時間,單位為秒。
  2. 在坐標軸上,紅色代表的是性能優(yōu)化前的請求響應時間,綠色代表的是優(yōu)化后的請求響應時間。黑色虛線代表的是目標線,目標為,單次請求在5s內(nèi)。

1.1.2 響應時間影響因素:

  1. 檢索資源越多(服務器),響應時間越短。
  2. 檢索時間范圍越大(一次檢索數(shù)據(jù)越多),響應時間越長。目前支持最大的檢索時間跨度為3個月。
  3. 檢索關鍵詞越多,響應時間越長。目前能夠給業(yè)務開放支持的是 100個檢索詞。

1.1.3 優(yōu)化后效果

  1. 整體性能提升效果明顯,提升在 1~ 30倍。
  2. 其中對于慢查詢提升效果更好。對于檢索時間范圍越長,效果提升越好;對于檢索關鍵詞越多,效果提升越好。
  3. 最終的檢索效果,檢索關鍵詞小于等于50個,響應時間可以控制在5s內(nèi),能夠達到目標。其中只有檢索時間跨度到3個月,檢索關鍵詞100無法達到5s內(nèi),目前是7s。

1.3 測試數(shù)據(jù)說明

性能提升前后測試數(shù)據(jù)如下圖2:

  1. 測試對比數(shù)據(jù)由測試組同事提供。
  2. 測試接口為服務總線生產(chǎn)環(huán)境,檢索邏輯為實際的業(yè)務檢索條件。響應時間略大于ES的響應時間。其中有0.3~0.5花在網(wǎng)絡傳輸上。
  3. 其中提升前,是指綜合排序,使用腳本實現(xiàn),是聞海2.0實現(xiàn)思路。提升后是指使用cutting off機制,對搜索進行優(yōu)化。

ES性能優(yōu)化最佳實踐- 檢索性能提升30倍!,Elasticsearch,ES搜索優(yōu)化,elasticsearch,大數(shù)據(jù),搜索引擎,檢索性能優(yōu)化

圖2

1.4 關于綜合排序說明

綜合排序,是業(yè)務上使用最頻繁的一種數(shù)據(jù)排序方式,也是默認的排序方式。其可以結(jié)合多個字段以及ES的BM25相關性分數(shù),做一個綜合的排序。在實現(xiàn)上,使用script提取每一條數(shù)據(jù)的N個字段,然后計算一個分數(shù),并和ES的相關性分數(shù)做融合。

其最大的優(yōu)點是召回的數(shù)據(jù)質(zhì)量好,可以滿足相關性的排序效果。

其最大的缺點是單次檢索,有非常大的計算量,需要花費大量的資源。單個檢索隨著命中的數(shù)據(jù)變多,檢索的時間復雜度增加,響應時間增加。使用script,需要對命中的所有數(shù)據(jù)做實時計算,計算過程需要將所需要的字段IO出來,會產(chǎn)生大量小文件的IO。由于每一條數(shù)據(jù)都需要做計算,索引,會占用大量的CPU資源,最終導致整體檢索效果慢N倍,N>5。且隨著關鍵詞命中的結(jié)果集合增大,額外的IO和CPU計算導致檢索性能越來越差。50個檢索詞在三個月中,耗時39s。150個詞在三個月數(shù)據(jù)中檢索時間300s。

1.5 優(yōu)化說明

1.5.1上述綜合排序中的問題,歸結(jié)為兩點。

  1. 有腳本的存在,且需要實時計算。ES中腳本排序是一種低性能的檢索方式。
  2. 單次檢索需要掃描全量的數(shù)據(jù),且要對命中的數(shù)據(jù)做計算。單次檢索復雜度高。其中最大檢索時間跨度下,全部數(shù)據(jù)約450億數(shù)據(jù)。最大檢索關鍵詞數(shù)下,100個檢索關鍵詞OR的邏輯,能夠命中上億的數(shù)據(jù)。

1.5.2 針對問題,提出解決方案:

  1. 分數(shù)預處理機制:對于多個要參與排序的字段分數(shù),可以提前計算好,用一個額外的字段承接此分數(shù)。此操作可避免實時計算,從IO多個字段,變?yōu)镮O 一個字段。如下圖所示,在數(shù)據(jù)處理層,在數(shù)據(jù)入ES前,通過對數(shù)據(jù)的預處理,計算文檔的質(zhì)量分數(shù)。利用ES的插入排序能力,將高質(zhì)量的文檔在插入的時候放在最前邊檢索。

ES性能優(yōu)化最佳實踐- 檢索性能提升30倍!,Elasticsearch,ES搜索優(yōu)化,elasticsearch,大數(shù)據(jù),搜索引擎,檢索性能優(yōu)化

  1. 避免掃描全量數(shù)據(jù)。利用數(shù)據(jù)寫入排序,可以做到將高質(zhì)量數(shù)據(jù)在存儲上總是排在前邊,優(yōu)先被檢索到。在數(shù)據(jù)根據(jù)質(zhì)量有序以后,則請求可以做截斷。優(yōu)先遍歷高質(zhì)量數(shù)據(jù),找到topK的滿足條件的數(shù)據(jù),此時分數(shù)也是最高的,達到召回條件后,則提前終止請求。

ES性能優(yōu)化最佳實踐- 檢索性能提升30倍!,Elasticsearch,ES搜索優(yōu)化,elasticsearch,大數(shù)據(jù),搜索引擎,檢索性能優(yōu)化文章來源地址http://www.zghlxwxcb.cn/news/detail-719810.html

到了這里,關于ES性能優(yōu)化最佳實踐- 檢索性能提升30倍!的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • ES 8.x 向量檢索性能測試 & 把向量檢索性能提升100倍!

    ES 8.x 向量檢索性能測試 & 把向量檢索性能提升100倍!

    ? 向量檢索不僅在的跨模態(tài)檢索場景中應用廣泛,隨著chat gpt的火熱,es的向量檢索,在Ai領域發(fā)揮著越來越大的作用。 ? 本文,主要測試es的向量檢索性能。我從8.x就開始關注ES的向量檢索了。當前ES已經(jīng)發(fā)布到 8.10 版本。以下是官方文檔的鏈接: ? ?https://www.elastic.co/guide/

    2024年02月07日
    瀏覽(19)
  • ES forceMerge 強制段合并為什么會提升檢索性能?

    ? 根據(jù)以前的測試,forceMerge段合并,將段的個數(shù)合并成一個。帶來了將近一倍的性能提升,測試過程文檔(請參考我的另外一篇文章):ES優(yōu)化實戰(zhàn)- forceMerge搜索提升測試報告_es forcemerge_水的精神的博客-CSDN博客 ? 注意,這次測試,只是這對一個長文本字段(就像一篇文章)

    2024年02月04日
    瀏覽(30)
  • 千萬級數(shù)據(jù)的表,我把慢sql優(yōu)化后性能提升30倍!

    千萬級數(shù)據(jù)的表,我把慢sql優(yōu)化后性能提升30倍!

    背景:系統(tǒng)中有一個統(tǒng)計頁面加載特別慢,前端設置的40s超時時間都加載不出來數(shù)據(jù),因為是個統(tǒng)計頁面,基本上一猜就知道是mysql的語句有問題,遺留了很久沒有解決,正好趁不忙的時候,下定決心一定把它給搞定! (mysql5.7) 執(zhí)行一下問題sql,可以看到單表查就需要61s 這

    2024年02月14日
    瀏覽(21)
  • 性能優(yōu)化實踐:一行代碼性能提升幾十倍?

    性能優(yōu)化實踐:一行代碼性能提升幾十倍?

    Part1 問題背景 在一般的互聯(lián)網(wǎng)公司,大家都非常忙碌?;顑菏怯肋h干不完的。這時候,我建議先做重要的事情。試想:一個人永遠都在做「緊急不重要」的事情,他的產(chǎn)出必然是非常低的。這就是為什么「重要不緊急」在第二象限,僅僅排在「重要且緊急」后面。 所以對于

    2024年04月28日
    瀏覽(18)
  • ElasticSearch 7.X系列之: 檢索性能優(yōu)化實戰(zhàn)指南

    檢索響應慢! 并發(fā)檢索用戶多時,響應時間不達標 卡死了! 怎么還沒有出結(jié)果? 怎么這么慢? 為啥競品產(chǎn)品的很快就返回結(jié)果了? 宕機了 等等...... 這些都與可能檢索有關,確切的說和檢索性能有關。 檢索性能的優(yōu)化涉及知識點比較零散,我以官方文檔的檢索性能優(yōu)化部

    2023年04月08日
    瀏覽(19)
  • Node.js性能優(yōu)化:實用技巧和最佳實踐

    Node.js 是一個基于 Chrome V8 引擎的 JavaScript 運行環(huán)境,廣泛用于構(gòu)建快速的、可擴展的網(wǎng)絡應用。盡管 Node.js 已經(jīng)為處理大量并發(fā)連接提供了強大的性能,但在實際開發(fā)中仍然需要采取一些策略來優(yōu)化性能和提升應用響應速度。以下是一些實用的技巧和最佳實踐,可以幫助開發(fā)

    2024年04月17日
    瀏覽(27)
  • Python web實戰(zhàn)之Django性能優(yōu)化最佳實踐詳解

    大家好!今天分享如何優(yōu)化使用Django應用的性能,使其在高并發(fā)、大數(shù)據(jù)量的情況下能夠保持良好的性能。 數(shù)據(jù)庫查詢是Web應用中常見的性能瓶頸之一。 1.1 使用select_related和prefetch_related 在Django中,可以使用 select_related 和 prefetch_related 方法來優(yōu)化數(shù)據(jù)庫查詢。這兩個方法可

    2024年02月11日
    瀏覽(85)
  • HTTP/2在Linux上的性能優(yōu)化和最佳實踐

    HTTP/2在Linux上的性能優(yōu)化和最佳實踐

    HTTP/2是互聯(lián)網(wǎng)通信協(xié)議的最新版本,它在設計上大大提升了網(wǎng)頁加載速度和服務器性能。尤其在Linux平臺上,通過一系列的優(yōu)化和最佳實踐,我們可以進一步發(fā)揮HTTP/2的優(yōu)勢。 1. 啟用HTTP/2 首先,確保你的Linux服務器上已經(jīng)安裝了支持HTTP/2的軟件。對于Nginx,你需要使用1.9.5及更

    2024年01月16日
    瀏覽(26)
  • 選擇結(jié)構(gòu)還是類?C#中的最佳實踐與性能優(yōu)化指南

    選擇結(jié)構(gòu)還是類?C#中的最佳實踐與性能優(yōu)化指南

    ? 概述: 在C#中,選擇使用結(jié)構(gòu)(struct)而非類(class)取決于數(shù)據(jù)大小、不可變性和性能需求。結(jié)構(gòu)適用于小型、不可變的數(shù)據(jù)對象,具有輕量級和高性能的優(yōu)勢。然而,對于復雜對象和需要繼承的情況,應選擇類。以下是一個簡單的結(jié)構(gòu)示例,演示了結(jié)構(gòu)在棧上分配內(nèi)存

    2024年04月09日
    瀏覽(99)
  • Java中處理千萬級數(shù)據(jù)的最佳實踐:性能優(yōu)化指南

    在今天的數(shù)字化時代,處理大規(guī)模數(shù)據(jù)已經(jīng)成為許多Java應用程序的核心任務。無論您是構(gòu)建數(shù)據(jù)分析工具、實現(xiàn)實時監(jiān)控系統(tǒng),還是處理大規(guī)模日志文件,性能優(yōu)化都是確保應用程序能夠高效運行的關鍵因素。本指南將介紹一系列最佳實踐,幫助您在處理千萬級數(shù)據(jù)時提高

    2024年02月03日
    瀏覽(34)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包