ElasticSearch - 分頁查詢方式二 【scroll】滾動查詢(kibana、Java示例)
轉載請標明出處:
http://blog.csdn.net/qq_27818541/article/details/109186734
本文出自:【BigManing的部落格】
前言
1、scroll原理
scroll API可用於從單個搜尋請求中檢索大量結果(甚至所有結果),其方式與在傳統資料庫上使用游標的方式大致相同。
第一次查詢時,會生產當時查詢的快照,後續的查詢只要攜帶上次返回的scroll_id
即可 。
2、特點
- 可以深查詢(甚至全部資料),效能、效率優於from+size方式。
- 快照查詢,在scroll查詢期間 ,外部對索引內的資料進行增刪改查等操作不會影響到這個快照的結果。
使用
1、kibana中測試示例
第一次查詢 ,並設定上下文scroll_id
存活時間為1分鐘。
POST book/_search?scroll=1m
{
"size": 10,
"query": {
"match" : {
"name": "明朝的那些事"
}
}
}
響應:
{
"_scroll_id":"DXF1ZXJ5QW5kRmV0Y2gBAAAAAAD1K-0WdzM3OF9WRVFUcXk3bFNDcjZKZ1pZdw==",
"took":22,
"timed_out":false,
"_shards":{
"total":1,
"successful":1,
"skipped":0,
"failed":0
},
"hits":{
"total":1302017,
"max_score":2.5815613,
"hits":Array[10]
}
}
後續查詢,使用前一個scroll_id
即可:
POST _search/scroll
{
"scroll":"1m",
"scroll_id":"DXF1ZXJ5QW5kRmV0Y2gBAAAAAAD1K-0WdzM3OF9WRVFUcXk3bFNDcjZKZ1pZdw=="
}
2、Java程式碼示例
首次呼叫
:
// 構建搜尋條件
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
...
searchSourceBuilder.from(100).size(10);
// 構建請求
SearchRequest searchRequest = new SearchRequest("book");
searchRequest.types("title");
// ===》 關鍵是多加了這句話
searchRequest.scroll(new Scroll(TimeValue.timeValueMinutes(1)));
searchRequest.source(searchSourceBuilder);
return client.search(searchRequest, RequestOptions.DEFAULT);
後續呼叫
:
// 傳入上次返回的scroll_id
SearchScrollRequest scrollRequest = new SearchScrollRequest(scrollId);
scrollRequest.scroll(TimeValue.timeValueMinutes(1));
SearchResponse response = client.getRestClient().scroll(scrollRequest, RequestOptions.DEFAULT);
return response;
相關文章
- Elasticsearch 分頁查詢Elasticsearch
- AntDesignBlazor示例——分頁查詢Blazor
- elasticsearch查詢之大資料集分頁查詢Elasticsearch大資料
- SpringBoot整合Elasticsearch遊標查詢(scroll)Spring BootElasticsearch
- 查詢——二分查詢
- ElasticSearch的查詢(二)Elasticsearch
- Kibana+Logstash+Elasticsearch 日誌查詢系統Elasticsearch
- 查詢演算法__二分查詢演算法
- elasticsearch查詢之大資料集分頁效能分析Elasticsearch大資料
- 二分查詢(一)——純粹的二分查詢
- Elasticsearch查詢Elasticsearch
- Elasticsearch複合查詢——boosting查詢Elasticsearch
- 二分查詢
- 查詢演算法之二分查詢演算法
- MySQL——優化巢狀查詢和分頁查詢MySql優化巢狀
- NET 集合分頁查詢
- MySQL的分頁查詢MySql
- ThinkPhp框架:分頁查詢PHP框架
- 分頁查詢優化優化
- HBase學習之二: hbase分頁查詢
- SSH整合實現分頁查詢(兩種方式)
- 【Java】陣列二分查詢元素Java陣列
- Kibana查詢語言(KQL)
- Oracle總結【SQL細節、多表查詢、分組查詢、分頁】OracleSQL
- Elasticsearch 高亮查詢Elasticsearch
- ElasticSearch DSL 查詢Elasticsearch
- 二分查詢法
- PHP二分查詢PHP
- leetcode——二分查詢LeetCode
- leetcode -- 二分查詢LeetCode
- Elasticsearch中的Term查詢和全文查詢Elasticsearch
- 二分查詢 | 二分查詢的一種推薦寫法
- MySQL分頁查詢優化MySql優化
- indexdb實現分頁查詢Index
- 二分查詢【折半查詢】演算法 PHP 版演算法PHP
- 資料庫全表查詢之-分頁查詢優化資料庫優化
- mysql-分組查詢-子查詢-連線查詢-組合查詢MySql
- elasticsearch的模糊查詢Elasticsearch