溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Elasticsearch分頁查詢的問題有哪些

發(fā)布時間:2021-10-21 10:29:48 來源:億速云 閱讀:265 作者:iii 欄目:編程語言

這篇文章主要介紹“Elasticsearch分頁查詢的問題有哪些”,在日常操作中,相信很多人在Elasticsearch分頁查詢的問題有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Elasticsearch分頁查詢的問題有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

Elasticsearch 分頁查詢有個特點,如果你寫一個這樣的查詢語句:

{
    "from" : 10, "size" : 10,
    "query" : {}
}

Elasticsearch 會查詢出前 20 條數(shù)據(jù),然后截斷前 10 條,只返回 10-20 的數(shù)據(jù)。

這樣做帶來的副作用很明顯,數(shù)據(jù)量大的話,越到后面查詢越慢。

所以針對大數(shù)據(jù)量的查詢,要使用 scroll。這種方式相當(dāng)于建立了一個游標,標記當(dāng)前的讀取位置,保證下一次查詢快速取出數(shù)據(jù)。

但這兩種方式都還有一個小坑需要注意,下面來詳細說明。

from + size 方式

可能會出現(xiàn)的問題:

Result window is too large, from + size must be less than or equal to: [10000] but was [10010]. See the scroll api for a more efficient way to request large data sets. This limit can be set by changing the [index.max_result_window] index level setting.

這個報錯信息其實已經(jīng)說的很明確了,通過這種分頁方式查詢的最大值是 10000,超過 10000 就會報錯。

解決辦法也很簡單,一是針對大數(shù)據(jù)量查詢采用 scroll 方式;二是增加 index.max_result_window 值的大小,使其支持查詢范圍。

推薦使用 scroll 方式。

scroll 方式

可能會出現(xiàn)的問題:

Trying to create too many scroll contexts. Must be less than or equal to: [500]. This limit can be set by changing the [search.max_open_scroll_context] setting.

產(chǎn)生這個錯誤的原因是:

當(dāng)有大量需要使用 scroll 的請求向 Elasticsearch 請求數(shù)據(jù)時,系統(tǒng)默認最大 scroll_id 數(shù)量是 500,當(dāng)達到最大值時,導(dǎo)致部分請求沒有 scroll_id 可用,產(chǎn)生報錯。

特別是在高并發(fā)場景下,這種問題可能會更加常見。

解決辦法可以增加 search.max_open_scroll_context 值的大小。

但這么解決并不好,更好的辦法是查詢完之后,及時清理 scroll_id。

# python
from elasticsearch import Elasticsearch


client = Elasticsearch(host, http_auth=(username, password), timeout=3600)
es_data = client.search(es_index, query_body, scroll='1m', size=100)
scroll_id = es_data['_scroll_id']
client.clear_scroll(scroll_id=scroll_id)	# 清理方法

其實,即使我們不手動清理,等過期之后,游標也會自己釋放,這跟使用時的參數(shù)有關(guān)。

比如 scroll='1m' 代表 1min 后會釋放。

但就像我們使用其他資源一樣,使用完之后及時釋放,養(yǎng)成良好的編碼習(xí)慣,系統(tǒng)才能更健壯。

到此,關(guān)于“Elasticsearch分頁查詢的問題有哪些”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI