了解Elasticsearch中的扫描和滚动

时间:2015-12-09 20:40:04

标签: angularjs elasticsearch pagination

使用ES和AngularJS制作一个小型搜索应用。我试图了解如何在ES中实现扫描和滚动功能以用于分页。

文档说要发出搜索请求,然后加入搜索类型:scan'并且'滚动'参数。

我是否只是将这些参数添加到我当前的搜索请求中,还是需要发出另一个搜索请求并将请求指定为扫描和滚动搜索请求?

1 个答案:

答案 0 :(得分:2)

作为文档解释,您需要使用

进行第一次调用
GET /old_index/_search?search_type=scan&scroll=1m 
{
    "query": { "match_all": {}},
    "size":  1000
}

对此请求的回复不包括任何匹配(表示您搜索的内容),但滚动ID如下所示

{
    "_scroll_id" : "c2Nhbjs1OzMwNTYzMTkxNjpTSkM2S0cxVFJIeUk1NnZWbGFUV1FnOzMwNTYzMTkxNTpTSkM2S0cxVFJIeUk1NnZWbGFUV1FnOzMwNTYyMjEwNzp4OEkwZE54eVR0cXI4cHAzU2I5UmlBOzMwNTYzNTE0NjpQZEhCSUZXeFJZU3daaDJKZXZCRmh3OzMwNTY0OTg4OTphdEE1OTN2NFFsYVY5ZjJ4SUxuVFpROzE7dG90YWxfaGl0czoyOTIwOw==",
    "took" : 10,
    "timed_out" : false,
    "_shards" : {
        "total" : 5,
        "successful" : 5,
        "failed" : 0
    },
    "hits" : {
        "total" : 2920,
        "max_score" : 0,
        "hits" : []
    }
} 

在此之后,您可以使用scroll_id进行普通调用 GET / _search /滚动滚动=1米&安培; _scroll_idc2Nhbjs1OzMwNTYzMTkxNjpTSkM2S0cxVFJIeUk1NnZWbGFUV1FnOzMwNTYzMTkxNTpTSkM2S0cxVFJIeUk1NnZWbGFUV1FnOzMwNTYyMjEwNzp4OEkwZE54eVR0cXI4cHAzU2I5UmlBOzMwNTYzNTE0NjpQZEhCSUZXeFJZU3daaDJKZXZCRmh3OzMwNTY0OTg4OTphdEE1OTN2NFFsYVY5ZjJ4SUxuVFpROzE7dG90YWxfaGl0czoyOTIwOw ==

_scroll_id可以在请求或正文中