中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

Elasticsearch分頁查詢的問題有哪些

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

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

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

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

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

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

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

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

from + size 方式

可能會出現的問題:

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.

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

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

推薦使用 scroll 方式。

scroll 方式

可能會出現的問題:

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.

產生這個錯誤的原因是:

當有大量需要使用 scroll 的請求向 Elasticsearch 請求數據時,系統默認最大 scroll_id 數量是 500,當達到最大值時,導致部分請求沒有 scroll_id 可用,產生報錯。

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

解決辦法可以增加 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)	# 清理方法

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

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

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

到此,關于“Elasticsearch分頁查詢的問題有哪些”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

潞西市| 金塔县| 洛宁县| 周宁县| 溆浦县| 广昌县| 沙河市| 宜宾市| 通化县| 新化县| 双辽市| 阳山县| 黑龙江省| 红河县| 当涂县| 巴南区| 沙田区| 兴城市| 招远市| 濮阳市| 安陆市| 兴安县| 陆良县| 习水县| 富民县| 内黄县| 洞口县| 云浮市| 政和县| 林甸县| 永昌县| 高陵县| 驻马店市| 平和县| 乐东| 大理市| 安平县| 固原市| 东山县| 恩平市| 应用必备|