這篇文章主要介紹“Elasticsearch分頁(yè)查詢的問(wèn)題有哪些”,在日常操作中,相信很多人在Elasticsearch分頁(yè)查詢的問(wèn)題有哪些問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”Elasticsearch分頁(yè)查詢的問(wèn)題有哪些”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
創(chuàng)新互聯(lián)是一家以成都網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、品牌設(shè)計(jì)、軟件運(yùn)維、seo優(yōu)化、小程序App開(kāi)發(fā)等移動(dòng)開(kāi)發(fā)為一體互聯(lián)網(wǎng)公司。已累計(jì)為活動(dòng)板房等眾行業(yè)中小客戶提供優(yōu)質(zhì)的互聯(lián)網(wǎng)建站和軟件開(kāi)發(fā)服務(wù)。
Elasticsearch 分頁(yè)查詢有個(gè)特點(diǎn),如果你寫一個(gè)這樣的查詢語(yǔ)句:
{ "from" : 10, "size" : 10, "query" : {} }
Elasticsearch 會(huì)查詢出前 20 條數(shù)據(jù),然后截?cái)嗲?10 條,只返回 10-20 的數(shù)據(jù)。
這樣做帶來(lái)的副作用很明顯,數(shù)據(jù)量大的話,越到后面查詢?cè)铰?/p>
所以針對(duì)大數(shù)據(jù)量的查詢,要使用 scroll。這種方式相當(dāng)于建立了一個(gè)游標(biāo),標(biāo)記當(dāng)前的讀取位置,保證下一次查詢快速取出數(shù)據(jù)。
但這兩種方式都還有一個(gè)小坑需要注意,下面來(lái)詳細(xì)說(shuō)明。
可能會(huì)出現(xiàn)的問(wè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.
這個(gè)報(bào)錯(cuò)信息其實(shí)已經(jīng)說(shuō)的很明確了,通過(guò)這種分頁(yè)方式查詢的最大值是 10000,超過(guò) 10000 就會(huì)報(bào)錯(cuò)。
解決辦法也很簡(jiǎn)單,一是針對(duì)大數(shù)據(jù)量查詢采用 scroll 方式;二是增加 index.max_result_window
值的大小,使其支持查詢范圍。
推薦使用 scroll 方式。
可能會(huì)出現(xiàn)的問(wè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)生這個(gè)錯(cuò)誤的原因是:
當(dāng)有大量需要使用 scroll 的請(qǐng)求向 Elasticsearch 請(qǐng)求數(shù)據(jù)時(shí),系統(tǒng)默認(rèn)最大 scroll_id 數(shù)量是 500,當(dāng)達(dá)到最大值時(shí),導(dǎo)致部分請(qǐng)求沒(méi)有 scroll_id 可用,產(chǎn)生報(bào)錯(cuò)。
特別是在高并發(fā)場(chǎng)景下,這種問(wèn)題可能會(huì)更加常見(jiàn)。
解決辦法可以增加 search.max_open_scroll_context
值的大小。
但這么解決并不好,更好的辦法是查詢完之后,及時(shí)清理 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í),即使我們不手動(dòng)清理,等過(guò)期之后,游標(biāo)也會(huì)自己釋放,這跟使用時(shí)的參數(shù)有關(guān)。
比如 scroll='1m'
代表 1min 后會(huì)釋放。
但就像我們使用其他資源一樣,使用完之后及時(shí)釋放,養(yǎng)成良好的編碼習(xí)慣,系統(tǒng)才能更健壯。
到此,關(guān)于“Elasticsearch分頁(yè)查詢的問(wèn)題有哪些”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!
本文名稱:Elasticsearch分頁(yè)查詢的問(wèn)題有哪些
文章轉(zhuǎn)載:http://aaarwkj.com/article38/pjdpsp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、面包屑導(dǎo)航、品牌網(wǎng)站設(shè)計(jì)、域名注冊(cè)、商城網(wǎng)站、軟件開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)