0
点赞
收藏
分享

微信扫一扫

Elastic实战: 通过bucket_sort针对聚合后结果实现分页

唯米天空 2022-05-02 阅读 45

0. 引言

elaticsearch中实现聚合操作十分常见,同时es本身存储的数据量一般都比较大,因此聚合结果数量通常都比较多,所以针对聚合结果进行分页,也是非常常见的需求

1. 实现

我们可以通过bucket_sort管道聚合来实现分页

我们来看看官方文档中的定义
在这里插入图片描述

下面我们通过一个例子来说明其作用:

我们利用kibana提供的样例数据写个聚合:

GET kibana_sample_data_flights/_search
{
  "size": 0,
  "aggs": {
    "date_aggs": {
      "date_histogram": {
        "field": "timestamp",
        "interval": "day",
        "format": "yyyy-MM-dd"
      }
    }
  }
}

执行结果:
在这里插入图片描述
添加bucket_sort来实现分页

GET kibana_sample_data_flights/_search
{
  "size": 0,
  "aggs": {
    "date_aggs": {
      "date_histogram": {
        "field": "timestamp",
        "interval": "day",
        "format": "yyyy-MM-dd"
      },
      "aggs": {
        "page": {
          "bucket_sort": {
            "sort": [],
            "from": 1,
            "size": 3
          }
        }
      }
    }
  }
}

分页结果:
在这里插入图片描述
可以看到我们想要的分页结果已经实现了,同时我们还可以在sort属性中定义分页排序条件

怎么样,bucket_sort的实现是不是很简单,赶紧自己动手试试吧。

关注公众号:Elaticsearch之家,了解更多新鲜内容

在这里插入图片描述

举报

相关推荐

0 条评论