ElasticSearch 翻頁查詢

2021-08-03 14:45:43 字數 1253 閱讀 7076

相對於ealsticsearch的search api, 翻頁查詢可以將查詢結果集分頁返回,而不是將所有的結果放在乙個page返回。如果查詢的結果集包含大量的資料,就可以用到翻頁查詢(scroll) api,比如有200k條資料,可以將它們分成20次請求,每次只返回10k條查詢結果. 有點類似於資料庫裡面的游標。

要使用翻頁查詢,需要在search請求中指定乙個引數:

scroll。這個引數是告訴elasticsearch要保留多久當前這個search context, 可以理解為session 的keep alive。這樣下次查詢的時候只需要傳遞乙個

scroll id就可以了。例如?scroll=5m (保留5分鐘)。

curl -xget 'localhost:9200/twitter/tweet/_search?scroll=1m' -d '}}

'

上面的請求的response裡面會包含乙個

_scroll_id,這個

_scroll_id必須加到下一次請求的body裡面。

需要注意的是,每次新的查詢必需用最近返回的

_scroll_id。

curl -xget  'localhost:9200/_search/scroll'  -d'

'

可以看到上面的請求裡面不再需要將第一次的查詢引數(比如title == 'elasticsearch')放到request body裡面,因為elasticsearch會根據這個scroll_id查到這個id對應的search context。

hits來判斷是不是查詢結束了。

clear 翻頁api

預設elasticsearch會刪除所有timeout的scroll_id對就的search context。但使用者也可以提前刪除這些scroll_id, 因為如果查詢非常頻繁時,保留這麼多的search context也是需要很多開銷的。下面是關於怎麼顯式地刪除這些scroll_id。

curl -xdelete localhost:9200/_search/scroll -d '

'

你也可以把所有的scroll_id放到乙個陣列裡面一次刪除:

curl -xdelete localhost:9200/_search/scroll -d '

'

要刪除所有的scroll_id,可以指定all這個引數:

curl -xdelete localhost:9200/_search/scroll/_all

jquery無重新整理翻頁,無翻頁效果

前台 名稱 nc2 httputility.urlencode 值 class lk mw 更多 一般處理程式 using system using system.collections using system.data using system.web using system.web.serv...

GridView CheckBox 翻頁不儲存狀態

在gridview中新增模板列 模板列裡新增checkbox後,gridview翻頁會把其他頁選擇項清除掉,是因為沒有儲存狀態。想了想大概思路是這樣的 用乙個陣列類的東西儲存所選擇的項。這裡用到了集合。下面的是在網上找到的 轉下 using system.collections.generic pr...

SQL 翻頁查詢

select top 10 frombasicinfor where eid not in select top 20 eid from basicinfor orderby ename order by ename 其中 10 是你每頁顯示的行數 可以通過引數獲得。後面的20 是10 2 2是第幾...