es中的分頁

2021-07-13 01:13:26 字數 569 閱讀 1529

elasticsearch接受from和size引數來分頁:

size: 結果條數,預設10

from: 跳過開始的結果數,預設0

請求範例:

get /_search?size=5&from=10

應該當心分頁太深或者一次請求太多的結果。結果在返回前會被排序。

乙個搜尋請求常常涉及多個分片。

每個分片生成自己排好序的結果,它們接著需要集中起來排序以確保整體排序正確。

在集群系統中深度分頁

為了理解為什麼深度分頁是有問題的,讓我們假設在乙個有5個主分片的索引中搜尋。當我們請求結果的第一頁(結果1到10)時,每個分片產生自己最頂端10個結果然後返回它們給請求節點(requesting node),它再排序這所有的50個結果以選出頂端的10個結果。

現在假設我們請求第1000頁——結果10001到10010。工作方式都相同,不同的是每個分片都必須產生頂端的10010個結果。然後請求節點排序這50050個結果並丟棄50040個!

你可以看到在分布式系統中,排序結果的花費隨著分頁的深入而成倍增長。這也是為什麼網路搜尋引擎中任何語句不能返回多於1000個結果的原因。

es深度分頁處理

最近做到es分頁的需求,由於es的from to的分頁只能在10000條以內的資料進行分頁,超過了10000去查詢就會報錯。在網上找了一下都說用scroll,但是沒有乙個完美的解決方案。然後我就開始自擼了。我用了elasticsearch rest high level client 5.6.3。e...

es深度分頁問題

1.from size es 預設採用的分頁方式是 from size 的形式,在深度分頁的情況下,這種使用方式效率是非常低的,比如 from 5000,size 10,es 需要在各個分片上匹配排序並得到5000 10條有效資料,然後在結果集中取最後10條,es預設是10000條資料,可以通過設定...

ES 深度分頁 滾動搜尋

深度分頁其實就是搜尋的深淺度,比如第1頁,第2頁,第10頁,第20頁,是比較淺的 第10000頁,第20000頁就是很深了。使用如下操作 from 9990,size 10 from 9999,size 10 我們在獲取第9999條到10009條資料的時候,其實每個分片都會拿到10009條資料,然後...