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

Elasticsearch 8.X DSL 如何優(yōu)化更有助于提升檢索性能?

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

1、企業(yè)級實戰(zhàn) DSL(數(shù)據(jù)已經(jīng)脫敏)

dsl優(yōu)化dsl優(yōu)化dsl優(yōu)化

2、大家可以看一下,能發(fā)現(xiàn)哪些問題?

根據(jù)我的實戰(zhàn)和咨詢經(jīng)驗,我發(fā)現(xiàn)如下幾個問題。

當(dāng)然,這是在和球友交流確認(rèn)問題之后總結(jié)出來的。

2.1 問題1:bool 組合嵌套過深。

官方實際是有參數(shù)來約束的,indices.query.bool.max_nested_depth——bool 最大支持的嵌套層數(shù)是 20,并且過大的嵌套層數(shù)會導(dǎo)致“堆棧溢出”異常問題。

那 bool 組合嵌套越深是不是越慢呢?

我拿 228 萬+的微博數(shù)據(jù)(JMeter 模擬100用戶并發(fā))作為樣例索引數(shù)據(jù)進(jìn)行驗證。

  • 實驗1:嵌套 10 層;執(zhí)行 5 次,平均耗時:835 ms。

  • 實驗2:嵌套 2 層;執(zhí)行 5 次,平均耗時:674.8 ms。

對比看實驗 2 執(zhí)行查詢較實驗 1 的查詢要快!

其實,初步結(jié)論是嵌套越深,執(zhí)行越慢!

dsl優(yōu)化dsl優(yōu)化

2.2 問題2:大量使用 wildcard 查詢。

我之前血淋淋的教訓(xùn)告訴大家,非必要不使用 wildcard !

尤其數(shù)據(jù)量大的場景。

參見:Elasticsearch 警惕使用 wildcard 檢索!然后呢?

依然拿 228 萬+的微博數(shù)據(jù)(JMeter 模擬 100 用戶并發(fā))作為樣例索引數(shù)據(jù)進(jìn)行驗證。

dsl優(yōu)化

檢索語句如下:

dsl優(yōu)化

使用:match_phrase 短語匹配較使用 wildcard 模糊匹配效率提升:6.34 倍!

dsl優(yōu)化

初步結(jié)論:非必要,不使用 ?wildcard。

2.3 問題3:"track_total_hits": 2147483647 沒有必要搞這么大?

認(rèn)知前提:Elasticsearch 中 max_result_window 這個參數(shù)大家比較熟悉,就是允許 from + size 翻頁檢索命中的最多文檔數(shù)為:10000 條記錄。

那么問題來了,如果命中數(shù)據(jù)量超過 10000萬怎么辦?

  • 一方面:我們可以修改:max_result_window 的默認(rèn)值,但默認(rèn)值修改要慎之又慎。

  • 另一方面:我們可以在執(zhí)行檢索的時候加上 track_total_hits 這個參數(shù)。

dsl優(yōu)化

問題來了?什么場景需要單獨設(shè)置 track_total_hits 參數(shù)?什么時候不需要呢?

  • 場景一:當(dāng)索引設(shè)置層面設(shè)置了 index.sort 后,本質(zhì)上寫入的數(shù)據(jù)已經(jīng)進(jìn)行了預(yù)排序。如果只對前 N 個結(jié)果感興趣,而不關(guān)心總命中數(shù),可以簡單地將 track_total_hits 設(shè)置為 false。

  • 場景二:針對 filter 過濾檢索的場景,用戶僅關(guān)注是否存在,不關(guān)注相關(guān)性??梢苑譃槿缦聝煞N情況:

dsl優(yōu)化

(1)情況2.1:將 track_total_hits 設(shè)置為 false,檢索結(jié)果將不再返回 hits.total 的具體值。

(2)情況2.2:將 track_total_hits 設(shè)置為給定的 N, 那么每個分片待召回 N 個文檔后就返回。除此之外的業(yè)務(wù)場景,建議慎用 track_total_hits:true 的場景。

我們同樣對比一下性能。

dsl優(yōu)化

初步結(jié)論:加上 track_total_hits,檢索會變慢,我們要結(jié)合業(yè)務(wù)場景謹(jǐn)慎使用。

2.4 問題4:track_scores 確認(rèn)是否必要使用!

track_scores 含義如下:When sorting on a field, scores are not computed. By setting track_scores to true, scores will still be computed and tracked.

也就是說這是個和排序相關(guān)的參數(shù),如果走排序,就不計算評分。

如果想對排序加上評分處理,需要加這個參數(shù)。

2.5 問題5:"_source": {"includes": [ 確認(rèn)是否必須

其實有更快的建模方式,就是 store 設(shè)置 true 對字段單獨建模。當(dāng)然,這涉及到數(shù)據(jù)建模和寫入。

_source 下召回的數(shù)據(jù)字段越多,肯定會越慢。暫且不說別的,網(wǎng)絡(luò)傳輸?shù)慕嵌染涂梢娨话摺?/p>

網(wǎng)絡(luò)傳輸中,網(wǎng)速一定,但是 _source 字段多,意味著傳輸?shù)淖止?jié)數(shù)多,必然會越慢。

還是拿微博數(shù)據(jù)驗證一下,

dsl優(yōu)化

初步結(jié)論,僅指定一個字段比全部默認(rèn)字段(10個以上),影響時間要快很多!

2.6 問題6:match,match_phrase, wildcard 都混合使用,考慮分詞問題解決。

推薦:字詞混合索引方案。

一個線上問題引發(fā)的思考——Elasticsearch 8.X 如何實現(xiàn)更精準(zhǔn)的檢索?

2.7 問題7:建議線上使用復(fù)雜DSL,可以使用性能測試驗證一下。

文中 JMeter 測試工具使用,推薦視頻:

https://t.zsxq.com/0853Q9epD

3、小結(jié)

不要小瞧 DSL 的使用,不要堆砌一些不太理解的參數(shù)不加驗證直接用于實戰(zhàn)環(huán)境,后面的風(fēng)險會變得很大。

dsl優(yōu)化

DSL 的調(diào)優(yōu)其實直接影響到檢索性能。

大家對文中的 DSL 還有哪些調(diào)優(yōu)建議,歡迎留言交流!

推薦閱讀

  1. 全網(wǎng)首發(fā)!從 0 到 1 Elasticsearch 8.X 通關(guān)視頻

  2. 重磅 | 死磕 Elasticsearch 8.X 方法論認(rèn)知清單(2022年國慶更新版)

  3. 如何系統(tǒng)的學(xué)習(xí) Elasticsearch ?

  4. esrally 如何進(jìn)行簡單的自定義性能測試?

  5. Elasticsearch 性能調(diào)優(yōu)指南——推薦實戰(zhàn) DSL

  6. 讓Elasticsearch飛起來!——性能優(yōu)化實踐干貨

更短時間更快習(xí)得更多干貨!

和全球?1800+?Elastic 愛好者一起精進(jìn)!

dsl優(yōu)化

比同事?lián)屜纫徊綄W(xué)習(xí)進(jìn)階干貨!文章來源地址http://www.zghlxwxcb.cn/news/detail-573667.html

到了這里,關(guān)于Elasticsearch 8.X DSL 如何優(yōu)化更有助于提升檢索性能?的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 如何優(yōu)化vue項目 如何提升速度

    如何優(yōu)化vue項目 如何提升速度

    優(yōu)化 Vue 項目和提升速度可以從多個方面入手。下面是一些常見的優(yōu)化技巧: 使用生產(chǎn)環(huán)境構(gòu)建:在部署項目時,使用 Vue 的生產(chǎn)環(huán)境構(gòu)建可以去除開發(fā)環(huán)境的調(diào)試工具和警告信息,減小項目的體積。 代碼拆分和懶加載:將項目代碼拆分成多個小模塊,并使用 Vue 的異步組件

    2024年02月10日
    瀏覽(22)
  • 如何優(yōu)化檔案庫房管理?一招學(xué)會輕松提升效率

    如何優(yōu)化檔案庫房管理?一招學(xué)會輕松提升效率

    在現(xiàn)代企業(yè)運營中,檔案庫房扮演著重要的角色,承載著大量寶貴的紙質(zhì)檔案資料。這些檔案包含著企業(yè)的歷史、客戶信息、法律文件等重要數(shù)據(jù),對于企業(yè)的正常運轉(zhuǎn)和決策制定至關(guān)重要。然而,傳統(tǒng)的檔案庫房管理方式存在一系列的挑戰(zhàn)和難題。 傳統(tǒng)的檔案庫房管理通常

    2024年02月11日
    瀏覽(23)
  • 如何通過優(yōu)化服務(wù)器提升網(wǎng)站的SEO排名

    如何通過優(yōu)化服務(wù)器提升網(wǎng)站的SEO排名

    在當(dāng)今數(shù)字化時代,擁有一個高效、穩(wěn)定的服務(wù)器對于網(wǎng)站的成功至關(guān)重要。然而,服務(wù)器不僅僅是為了提供網(wǎng)站的基本運行,它還可以對搜索引擎優(yōu)化(SEO)起到關(guān)鍵作用,于是就有了多IP站群服務(wù)器這樣對SEO非常友好的服務(wù)器。通過優(yōu)化服務(wù)器設(shè)置和配置,可以提升網(wǎng)站的性

    2024年02月07日
    瀏覽(117)
  • Elasticsearch:人類語言到 Elasticsearch 查詢 DSL

    Elasticsearch:人類語言到 Elasticsearch 查詢 DSL

    Elasticsearch 為開發(fā)者提供了強大的搜索功能。Elasticsearch 使用 DSL 來進(jìn)行查詢。對于很多從關(guān)系數(shù)據(jù)庫過來的人,這個很顯然不很適應(yīng)。雖然我們可以使用 SQL 來進(jìn)行查詢,但是我們必須通過一些命令來進(jìn)行轉(zhuǎn)換。我們可以通過閱讀文章: Elasticsearch:Elasticsearch SQL介紹及實例

    2024年02月04日
    瀏覽(21)
  • elasticsearch 筆記二:搜索DSL 語法(搜索API、Query DSL)

    elasticsearch 筆記二:搜索DSL 語法(搜索API、Query DSL)

    從索引 tweet 里面搜索字段 user 為 kimchy 的記錄 從索引 tweet,user 里面搜索字段 user 為 kimchy 的記錄 從所有索引里面搜索字段 tag 為 wow 的記錄 說明:搜索的端點地址可以是多索引多 mapping type 的。搜索的參數(shù)可作為 URI 請求參數(shù)給出,也可用 request body 給出 URI 搜索方式通過 URI

    2024年02月04日
    瀏覽(18)
  • Elasticsearch Query DSL

    Elasticsearch Query DSL

    這里使用的 Elasticsearch 的版本為 7.12.1 。 1.1 文檔(Document) ElasticSearch 是面向文檔的,文檔是所有可搜索數(shù)據(jù)的最小單位,例如 MySQL 的一條數(shù)據(jù)記錄。 文檔會被序列化成為 json 格式,保存在 ElasticSearch 中。 每個文檔都有一個唯一 ID,例如 MySQL 中的主鍵 ID。 JSON文檔 一篇文檔包

    2024年02月15日
    瀏覽(18)
  • Elasticsearch:DSL Query

    Elasticsearch:DSL Query

    Elasticsearch提供了基于JSON的DSL(Domain Specific Language)來定義查詢。常見的查詢類型包括: 查詢所有:查詢出所有的數(shù)據(jù),一般測試用,例如:match_all,但有分頁限制,一次20條左右 全文檢索(full text)查詢:利用分詞器對用戶輸入內(nèi)容分詞,然后去倒排索引庫中匹配。常見的有兩種

    2024年02月10日
    瀏覽(48)
  • 【ElasticSearch】DSL查詢語法

    【ElasticSearch】DSL查詢語法

    Elasticsearch提供了基于JSON的DSL(Domain Specific Language)來定義查詢。官方文檔: 其中,常見的查詢類型有: 查詢所有 :查詢出所有數(shù)據(jù),一般測試用。例如: 全文檢索(full text)查詢 :利用分詞器對用戶輸入內(nèi)容分詞,然后去倒排索引庫中匹配。例如: 精確查詢 :根據(jù)精確

    2024年02月16日
    瀏覽(21)
  • 【Elasticsearch】DSL操作相關(guān)

    【Elasticsearch】DSL操作相關(guān)

    索引操作 ES的索引與SQL的表很類似 新建索引 查詢索引 查看所有索引 這里的查詢結(jié)果表示索引的狀態(tài)信息,按順序數(shù)據(jù)表示結(jié)果如下: 內(nèi)容 含義 具體描述 yellow 單點正常 當(dāng)前服務(wù)器健康狀態(tài): green (集群完整) yellow (單點正常、集群不完整) red(單點不正常) open status 索引打開

    2024年02月06日
    瀏覽(17)
  • ElasticSearch - DSL查詢語法

    ElasticSearch - DSL查詢語法

    目錄 DSL查詢分類 全文檢索查詢 精確查詢 地理查詢 復(fù)合查詢 相關(guān)性算分 算分函數(shù)查詢 BooleanQuery DSL查詢分類 Elasticsearch提供了基于JSON的DSL(Domain Specific Language)來定義查詢 常見的查詢類型包括: 查詢所有:查詢出所有的數(shù)據(jù),一般測試用;例如:match_all 全文檢索(full text)查詢

    2023年04月08日
    瀏覽(41)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包