ElasticSearch实战(二十九)-分页查询

Posted 张志翔ۤ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ElasticSearch实战(二十九)-分页查询相关的知识,希望对你有一定的参考价值。

        我们在实际工作中,有很多分页的需求,商品分页、订单分页等,在mysql中我们可以使用limit,那么在Elasticsearch中我们可以使用什么呢?

        ES 分页搜索一般有三种方案,from + size、search after、scroll api,这三种方案分别有自己的优缺点,下面将进行分别介绍。

        数据集我们使用kibana中的kibana_sample_data_flights

一、from + size

        这是ES分页中最常用的一种方式,与MySQL类似,from指定起始位置,size指定返回的文档数。我们查询航班中目的地的天气是晴朗的数据,按时间进行排序,命令如下:

GET kibana_sample_data_flights/_search
{
  "track_total_hits": true,
  "from": 10,
  "size": 2, 
  "query": {
    "match": {
      "DestWeather": "Sunny"
    }
  },
  "sort": [
    {
      "timestamp": {
        "order": "asc"
      }
    }
  ]
}

        from + size 的优点是简单,缺点是在深度分页的场景下系统开销比较大,小心内存溢出哦。

        注:track_total_hits:可以同时返回9999以上的数据,否则只能返回9999条数据。

二、search after

        这个不太明白是干嘛用的,先不介绍。

三、scroll api

         这个不太明白是干嘛用的,先不介绍。

        到此分页查询介绍完成。

以上是关于ElasticSearch实战(二十九)-分页查询的主要内容,如果未能解决你的问题,请参考以下文章

ElasticSearch实战(二十八)-高亮查询

ElasticSearch实战(二十八)-高亮查询

ElasticSearch实战(十九)-索引重建

ElasticSearch实战(二十四)-查询语法扩展

ElasticSearch实战(二十四)-查询语法扩展

ElasticSearch实战(二十一)-任务管理