Elasticsearch 5.0 深分页

2018-03-09 21:34:48
887次阅读
0个评论

Elasticsearch 5.0 新引入的一种分页查询机制search after。它的思想是利用上一页的分页结果来查询下一页的分页请求。


假设请求第一页的请求如下:

GET twitter/tweet/_search
{
    "size": 10,
    "query": {
        "match" : {
            "title" : "elasticsearch"
        }
    },
    "sort": [
        {"date": "asc"},
        {"_id": "desc"}
    ]
}
注意,这里为了避免sort字段相同值的导致排序不确定,这里增加了 _id 字段。

返回的结果会包含每个文档的sort字段的sort value。这个就是所谓的游标

使用最后一个文档的sort value作为search after请求值,我们就可以这样查询下一页结果了:
GET twitter/tweet/_search
{
    "size": 10,
    "query": {
        "match" : {
            "title" : "elasticsearch"
        }
    },
    "search_after": [2465659857, "154765"],
    "sort": [
        {"date": "asc"},
        {"_id": "desc"}
    ]
}
注意只能顺序的翻页,不能随意跳页。


收藏00

登录 后评论。没有帐号? 注册 一个。