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

es--Elastic Search深度分頁問題分析及四種解決方案

這篇具有很好參考價值的文章主要介紹了es--Elastic Search深度分頁問題分析及四種解決方案。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

1. 簡介

? Elasticsearch的深度分頁是指當(dāng)你需要查詢的結(jié)果數(shù)量非常多時,需要分頁查詢的第n頁時,每次查詢都需要掃描前n-1頁的數(shù)據(jù)來獲取結(jié)果。這樣會導(dǎo)致性能問題,因為它需要很長的時間來完成查詢。

2. 解決方案

  1. Scroll API: Scroll API可以讓你在每個查詢階段中存儲狀態(tài)。這樣,你就不需要從頭開始查詢,而只需要繼續(xù)上一次的查詢。使用Scroll API可以避免深度分頁的開銷,并且可以更好地管理內(nèi)存。
  2. Search After: Search After是一種基于游標(biāo)的分頁方案,它使用最后一個結(jié)果的位置作為游標(biāo)位置,從而避免使用_from_和_size_參數(shù)。
  3. Time-Based Pagination: 在特定情況下,你可以使用基于時間的分頁方案來避免深度分頁問題。例如,當(dāng)你需要按照日期或時間戳排序時,你可以使用基于時間的分頁。
  4. Shard-Based Pagination: 當(dāng)你需要對分布式數(shù)據(jù)進(jìn)行深度分頁時,你可以使用基于分片的分頁方案。這種方案將搜索分解成多個分片,然后對每個分片進(jìn)行分頁查詢,最后將結(jié)果聚合在一起。

3. scoroll API

3.1 簡介

Scroll API是Elasticsearch提供的一種用于深度分頁的解決方案。它允許您從數(shù)據(jù)集中獲取大量數(shù)據(jù)而不會使用過多的資源。

Scroll API通過分批次讀取數(shù)據(jù),將查詢拆分為多個小塊,并在每個小塊完成后將其提交到Web瀏覽器。這意味著您可以一次性檢索大量文檔,而不必?fù)?dān)心過多的資源使用和系統(tǒng)崩潰。

3.2 實現(xiàn)方式

  1. 使用search API對數(shù)據(jù)進(jìn)行初始查詢,并提供scroll參數(shù),該參數(shù)指定滾動時間的長度。
  2. Elasticsearch返回一個scroll_id,該ID用于檢索下一批數(shù)據(jù)。
  3. 使用scroll API檢索下一批數(shù)據(jù),并將scroll_id作為參數(shù)傳遞。
  4. 重復(fù)步驟3,直到所有數(shù)據(jù)都已檢索。
  5. 最后使用clear_scroll API來清除滾動上下文。

3.3 注意

使用Scroll API,您可以檢索大量數(shù)據(jù)而不必?fù)?dān)心內(nèi)存使用問題,因為每個請求都只需要在內(nèi)存中保存一小部分?jǐn)?shù)據(jù)。然而,它也有一些限制,如延遲和限制的滾動ID的數(shù)量。

4. Search After

4.1 簡介

Search After是Elasticsearch提供的另一種用于深度分頁的解決方案。它允許您非??焖俚貦z索大量數(shù)據(jù)并避免使用scroll API。

Search After需要使用排序字段和排序方向,以及最后一條記錄的值來獲取下一個分頁。排序字段必須是唯一的,并且必須被所有文檔定義。

4.2 實現(xiàn)方式

  1. 使用search API對數(shù)據(jù)進(jìn)行初始查詢,并指定排序字段和排序方向。
  2. 從響應(yīng)中獲取最后一條記錄的排序字段值。
  3. 使用search after參數(shù)檢索下一批數(shù)據(jù),并將之前獲取的排序字段值作為參數(shù)傳遞。
  4. 重復(fù)步驟2和3,直到所有數(shù)據(jù)都已檢索。

4.3 注意

使用Search After可以減少內(nèi)存的使用,因為它不需要使用滾動上下文來存儲結(jié)果。此外,它通過使用排序字段和排序方向來使性能得到了優(yōu)化。

但是,與scroll API不同,Search After需要您手動迭代頁面,并且需要在每個頁面上進(jìn)行額外的查詢。此外,如果數(shù)據(jù)集中有多個文檔具有相同的排序字段值,則可能會出現(xiàn)一些問題。

5. Time-Based Pagination

5.1 簡介

Time-Based Pagination (基于時間的分頁)是一種解決深度分頁問題的方案,它的核心思想是根據(jù)時間進(jìn)行分頁。在這種方案中,每個頁面都是根據(jù)創(chuàng)建時間、修改時間或更新時間進(jìn)行排序的,然后按照時間范圍進(jìn)行分頁。這種分頁方案的好處是可以減少數(shù)據(jù)庫的查詢負(fù)荷,同時保障頁面的加載速度。

5.2 實現(xiàn)方式

基于時間的分頁可以采用兩種方式進(jìn)行實現(xiàn):一種是使用時間戳,另一種是使用時間范圍。

使用時間戳進(jìn)行分頁,即將每條數(shù)據(jù)的時間戳作為頁面中的唯一標(biāo)識,根據(jù)時間戳對數(shù)據(jù)進(jìn)行排序,然后根據(jù)時間戳進(jìn)行分頁。這種方式的優(yōu)勢在于它非常簡單,但缺點(diǎn)是需要使用唯一的時間戳來對每個數(shù)據(jù)進(jìn)行排序,這往往需要占用大量的存儲空間。

使用時間范圍進(jìn)行分頁,即將時間區(qū)間作為頁面的唯一標(biāo)識,根據(jù)時間范圍對數(shù)據(jù)進(jìn)行排序,然后根據(jù)時間范圍進(jìn)行分頁。這種方式的優(yōu)勢在于它可以減少存儲空間的占用,但缺點(diǎn)是需要使用更復(fù)雜的算法來對數(shù)據(jù)進(jìn)行排序,并且需要處理時間范圍的交叉和重疊問題。

5.3 注意

無論是使用時間戳還是使用時間范圍進(jìn)行分頁,都需要注意數(shù)據(jù)的時區(qū),因為不同的時區(qū)可能會導(dǎo)致數(shù)據(jù)排序不一致。另外,為了提高查詢效率,也可以使用緩存和索引優(yōu)化技術(shù)來優(yōu)化分頁查詢。

6. Shard-Based Pagination

6.1 簡介

Shard-Based Pagination是一種深度分頁解決方案,可以減輕單個查詢處理所有數(shù)據(jù)的負(fù)擔(dān)。該方案建議使用分布式數(shù)據(jù)庫或搜索引擎系統(tǒng),并將數(shù)據(jù)按照一定的規(guī)則分成多個分片存儲。當(dāng)需要進(jìn)行深度分頁查詢時,只查詢需要的分片數(shù)據(jù),減少了單個查詢處理數(shù)據(jù)量的負(fù)擔(dān)。

6.2 實現(xiàn)方式

  1. 將數(shù)據(jù)根據(jù)一定的規(guī)則分片存儲,例如按時間、地理位置、用戶ID等。
  2. 對于需要進(jìn)行深度分頁查詢的請求,根據(jù)查詢條件確定需要查詢的分片數(shù)據(jù)。
  3. 對于每個分片數(shù)據(jù),使用常規(guī)的分頁方法進(jìn)行查詢。
  4. 將分頁結(jié)果按照查詢條件合并,得到最終的查詢結(jié)果。

6.3 注意

需要注意的是,Shard-Based Pagination需要在數(shù)據(jù)存儲時進(jìn)行分片,因此需要考慮好數(shù)據(jù)結(jié)構(gòu)和分片規(guī)則,避免出現(xiàn)數(shù)據(jù)分散不均的情況。同時,分片的實現(xiàn)也需要保證數(shù)據(jù)的一致性和可靠性。

總的來說,Shard-Based Pagination是一種有效解決深度分頁查詢性能問題的方案,可以較好地應(yīng)對大量數(shù)據(jù)查詢的需求。文章來源地址http://www.zghlxwxcb.cn/news/detail-715204.html

到了這里,關(guān)于es--Elastic Search深度分頁問題分析及四種解決方案的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 使用docker安裝elastic search[ES]和kibana

    使用docker安裝elastic search和kibana,版本均為7.17.1 docker pull# 去dockerhub看具體版本,這里用7.17.1 臨時安裝生成文件# 參數(shù)說明 -d 后臺啟動 –name 起別名即:NAMES -p 9200:9200 將端口映射出來 elasticsearch的9200端口是供外部訪問使用;9300端口是供內(nèi)部訪問使用集群間通訊 -e “discovery.

    2024年02月14日
    瀏覽(20)
  • elastic search java api 向量搜索實踐 / java結(jié)合es實現(xiàn) 以圖搜圖
  • elasticsearch 深度分頁查詢 Search_after(圖文教程)

    elasticsearch 深度分頁查詢 Search_after(圖文教程)

    前言 這是我在這個網(wǎng)站整理的筆記,有錯誤的地方請指出,關(guān)注我,接下來還會持續(xù)更新。 作者:神的孩子都在歌唱 search_after 是 Elasticsearch 提供的一種分頁查詢方式,它可以用來在已經(jīng)排序的結(jié)果集中進(jìn)行分頁查詢。 search_after查詢步驟如下(下面有具體的例子幫助理解):

    2024年04月11日
    瀏覽(26)
  • ElasticSearch第六講 ES 三種分頁查詢from+size / Scroll /search_after

    我的Git地址:https://gitee.com/ITLULU 歡迎訪問 ES的分頁查詢和關(guān)系數(shù)據(jù)庫的分頁查詢的區(qū)別: ES分頁查詢有以下幾種: 1:簡單的 from size (有默認(rèn)的最大Size,不可無限大小查詢,因為數(shù)據(jù)過多查詢性能會降低,且也要考慮內(nèi)存問題,以及OS緩存數(shù)據(jù)的能力) 2: scroll基于查詢窗口

    2024年02月01日
    瀏覽(15)
  • ElasticSearch系列 - SpringBoot整合ES:實現(xiàn)分頁搜索 from+size、search after、scroll

    01. 數(shù)據(jù)準(zhǔn)備 ElasticSearch 向 my_index 索引中索引了 12 條文檔: 02. ElasticSearch 如何查詢所有文檔? ElasticSearch 查詢所有文檔 根據(jù)查詢結(jié)果可以看出,集群中總共有12個文檔,hits.total.value=12, 但是在 hits 數(shù)組中只有 10 個文檔。如何才能看到其他的文檔? 03. ElasticSearch 如何指定搜

    2023年04月08日
    瀏覽(29)
  • Java客戶端調(diào)用elasticsearch進(jìn)行深度分頁查詢 (search_after)

    Java客戶端調(diào)用elasticsearch進(jìn)行深度分頁查詢 (search_after)

    前言 這是我在這個網(wǎng)站整理的筆記,有錯誤的地方請指出,關(guān)注我,接下來還會持續(xù)更新。 作者:神的孩子都在歌唱 具體的Search_after解釋,可以看我這篇文章 elasticsearch 深度分頁查詢 Search_after(圖文教程) 參考:https://blog.csdn.net/qq_44056652/article/details/126341810 作者:神的孩子

    2024年03月22日
    瀏覽(16)
  • 【elastic search】JAVA操作elastic search

    【elastic search】JAVA操作elastic search

    目錄 1.環(huán)境準(zhǔn)備 2.ES JAVA API 3.Spring Boot操作ES 本文是作者ES系列的第三篇文章,關(guān)于ES的核心概念移步: https://bugman.blog.csdn.net/article/details/135342256?spm=1001.2014.3001.5502 關(guān)于ES的下載安裝教程以及基本使用,移步: https://bugman.blog.csdn.net/article/details/135342256?spm=1001.2014.3001.5502 在前文

    2024年01月25日
    瀏覽(23)
  • ES千億級檢索實戰(zhàn) 堆OOM 問題深度分析

    ES千億級檢索實戰(zhàn) 堆OOM 問題深度分析

    ? 在特大規(guī)模的索引中檢索,通常一次檢索涉及到的分片數(shù)達(dá)到2000個左右。加上跨集檢索,堆有非常大的壓力,OOM的問題經(jīng)常發(fā)生。本篇文章,對線上環(huán)境的堆進(jìn)行深度分析,看看都有什么。 ? 我使用prifile來分析查看堆快照。并結(jié)合目前我對es底層的了解,來分析堆中都有

    2023年04月15日
    瀏覽(18)
  • 【51單片機(jī)入門】實現(xiàn)流水燈的原理及四種方法(詳細(xì)易上手型)

    【51單片機(jī)入門】實現(xiàn)流水燈的原理及四種方法(詳細(xì)易上手型)

    初學(xué)單片機(jī),流水燈的實現(xiàn)是必不可少的,下面將介紹流水燈的原理及使用STC-ISP軟件延時計算器生成的延時代碼實現(xiàn)流水燈的四種方法,最后介紹如何將延時函數(shù)模塊化。 目錄 ?一、流水燈原理? 二、循環(huán) 三、移位運(yùn)算符 四、庫函數(shù) 五、數(shù)組 ? ? ? ???六、延時函數(shù)模塊

    2024年02月05日
    瀏覽(46)
  • ElasticSearch(ES)深度分頁詳解

    ElasticSearch(ES)深度分頁詳解

    ElasticSearch 是一個實時的分布式搜索與分析引擎,常用于大量非結(jié)構(gòu)化數(shù)據(jù)的存儲和快速檢索場景,具有很強(qiáng)的擴(kuò)展性。縱使其有諸多優(yōu)點(diǎn),在搜索領(lǐng)域遠(yuǎn)超關(guān)系型數(shù)據(jù)庫,但依然存在與關(guān)系型數(shù)據(jù)庫同樣的深度分頁問題,本文就此問題做一個實踐性分析探討 from + size 分頁方

    2024年01月23日
    瀏覽(18)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包