Elasticsearch滚动查询

滚动查询

当搜索请求返回结果的单个页面时,滚动API可用于从单个搜索请求中检索大量结果。
目前支持滚动查询的客户端只有perl版和python版。
Perl: Search::Elasticsearch::Client::5_0::Bulk and Search::Elasticsearch::Client::5_0::Scroll
Python: elasticsearch.helpers.
步骤如下:

  • 获取scroll id,用于查询
  • 利用scroll id循环查询
  • 清除scroll id(可选)
获取scroll id

为了使用滚动,初始搜索请求应该在查询字符串中指定滚动参数,它告诉Elasticsearch应该保持“搜索上下文”存在多长时间,例如?scroll = 1m。

POST /twitter/tweet/_search?scroll=1m
{
    "size": 100,
    "query": {
        "match" : {
            "title" : "elasticsearch"
        }
    }
}

会得到如下类似的响应:

{
"_scroll_id": "DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAAABFlV2SjExVXdpUmwtNVFTOThNaWFRTVEAAAAAAAAAAhZVdkoxMVV3aVJsLTVRUzk4TWlhUU1RAAAAAAAAAAMWVXZKMTFVd2lSbC01UVM5OE1pYVFNUQAAAAAAAAAEFlV2SjExVXdpUmwtNVFTOThNaWFRTVEAAAAAAAAABRZVdkoxMVV3aVJsLTVRUzk4TWlhUU1R",
    "took": 879,
    "timed_out": false,
    "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": 136982,
        "max_score": 1,
        "hits": [
            
        ]
    }
}
利用scroll id进行查询

获取到scroll id之后,就可以利用它进行下一次的批量查询了。
查询条件会继承上次的查询条件和参数,并且会保持scroll id的活跃,不让它过期。
例如:

POST /_search/scroll 
{
    "scroll" : "1m", 
    "scroll_id" : "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAD4WYm9laVYtZndUQlNsdDcwakFMNjU1QQ==" 
}
清除scroll id(可选)

当Scroll id到期时,会自己清除,但是当设置的过期时间过长时,这时又以及查询完毕数据,可以选择手动清除scroll id.

DELETE /_search/scroll
{
    "scroll_id" : "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAD4WYm9laVYtZndUQlNsdDcwakFMNjU1QQ=="
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值