es分页的三种方式

885 阅读2分钟

1.from,size:页码比较大时不建议使用(支持跳页)

   GET /student/_search
    {
      "query": {
        "range": {
          "height": {
              "gte": 1,
            "lte": 2
          }
        }
      },
      "size":1,
      "from":0
    }

2.scroll:scroll=5m,有效期5分钟(不支持跳页)

 GET /student/_search?scroll=5m
{
  "query": {
    "range": {
      "height": {
        "gte": 1,
        "lte": 2
      }
    }
  },
  "size": 1
}

结果:

  {
      "_scroll_id" : "FGluY2x1ZGVfY29udGV4dF91dWlkDXF1ZXJ5QW5kRmV0Y2gBFjJpaXpsTHVzUm9xUTdrNGNwdEIxWmcAAAAAAABI4hZlV1Y5UFNZcFFodWYtcUJfM0FMWXVn",
      "took" : 13,
      "timed_out" : false,
      "_shards" : {
           "total" : 1,
           "successful" : 1,
           "skipped" : 0,
           "failed" : 0
      },
      "hits" : {
           "total" : {
           "value" : 6,
           "relation" : "eq"
        },
        "max_score" : 1.0,
        "hits" : [
          {
                "_index" : "student",
                "_type" : "_doc",
                "_id" : "2",
                "_score" : 1.0,
                "_source" : {
                      "first_name" : "li",
                      "last_name" : "si",
                      "introduce" : "自学本事强,善于思考,吃苦耐劳,有良好的沟通本事,善于与他人相处,富有团队合作精神,热爱运动。但人非完人,自我在某些方面还是有必须的不足,比如知识,社会经验等;可是我相信这些都是能够经过自我努力的学习来提高的,我也正朝着这个方向努力!能吃苦耐劳,愿从基层做起;以团体利益为第一原则,遵守公司的规章制度。",
                      "sex" : 1,
                      "sports" : [
                        "乒乓球",
                        "篮球"
                      ],
                  "height" : 1.78
            }
      }
    ]
  }
}

请求下一页:

GET _search/scroll
{
     "scroll_id":"FGluY2x1ZGVfY29udGV4dF91dWlkDXF1ZXJ5QW5kRmV0Y2gBFjJpaXpsTHVzUm9xUTdrNGNwdEIxWmcAAAAAAABI1RZlV1Y5UFNZcFFodWYtcUJfM0FMWXVn",
      "scroll":"5m"
    }

结果:

  {
      "_scroll_id" : "FGluY2x1ZGVfY29udGV4dF91dWlkDXF1ZXJ5QW5kRmV0Y2gBFjJpaXpsTHVzUm9xUTdrNGNwdEIxWmcAAAAAAABI7RZlV1Y5UFNZcFFodWYtcUJfM0FMWXVn",
      "took" : 5,
      "timed_out" : false,
      "_shards" : {
        "total" : 1,
        "successful" : 1,
        "skipped" : 0,
        "failed" : 0
      },
      "hits" : {
        "total" : {
          "value" : 6,
          "relation" : "eq"
        },
        "max_score" : 1.0,
        "hits" : [
          {
            "_index" : "student",
            "_type" : "_doc",
            "_id" : "3",
            "_score" : 1.0,
            "_source" : {
              "first_name" : "wang",
              "last_name" : "wu",
              "introduce" : "物流管理专业,拥有高级物流员资格证。为人乐观开朗,进取向上,勤奋努力,有团队合作精神,有职责心有耐心够细心。作为初学者,我具备出色的学习本事并且乐于学习、敢于创新,不断追求卓越;作为参与者,我具备诚实可信的品格、富有团队合作精神。期望经过工作自我能够得到必须的锻炼,丰富自身。",
              "sex" : 1,
              "sports" : [
                "乒乓球",
                "篮球"
              ],
              "height" : 1.8
            }
          }
        ]
      }
    }

3.search_after:不支持分页,使用search_after则from必须是0

GET /student/_search
{
  "query":{
    "range": {
      "height": {
        "gte": 1,
        "lte": 2
      }
    }
  },
  "sort": [
    {
      "height": {
        "order": "desc"
      },
      "_id":{
        "order": "desc"
      }
    }
  ],
  "size":1,
  "from":0
}  

结果:

  {
      "took" : 9,
      "timed_out" : false,
      "_shards" : {
        "total" : 1,
        "successful" : 1,
        "skipped" : 0,
        "failed" : 0
      },
      "hits" : {
        "total" : {
          "value" : 6,
          "relation" : "eq"
        },
        "max_score" : null,
        "hits" : [
          {
            "_index" : "student",
            "_type" : "_doc",
            "_id" : "6",
            "_score" : null,
            "_source" : {
              "first_name" : "Smith john",
              "last_name" : "John",
              "introduce" : "一向以来,努力、进取、乐观、拼搏是我的人生信条,我相信,我会一向努力下去,做好自我,奉献社会。敢做敢拼,脚踏实地;做事认真负责",
              "sex" : 1,
              "sports" : [
                "唱歌",
                "足球"
              ],
              "height" : 1.82
            },
            "sort" : [
              1.82,
              "6"
            ]
          }
        ]
      }
    }

下一次请求:

   GET /student/_search
    {
      "query": {
        "range": {
          "height": {
            "gte": 1,
            "lte": 2
          }
        }
      },
      "sort": [
        {
          "height": {
            "order": "desc"
          },
          "_id":{
            "order": "desc"
          }
        }
      ],
      "size": 1, 
      "search_after":[
         1.82,
         6
        ]
    }