当前位置:   article > 正文

ES聚合(分组)后分页_es aggs 分页

es aggs 分页
  • 正常情况下是不支持聚合后分页的,以下的原理是按照某个字段分组(桶),再对组(桶)进行排序或直接截断(分页)
  • 分页后是得不到分组后的组的总个数,目前采用的方法是先去查询组的总个数,然后分页,接着将两个结果合在一起使用
POST /log_*/_search
{
  "size": 0,
  "aggs": {
    "day": {
      "date_histogram": {
        "field": "@timestamp",
        "interval": "day",
        "format": "yyyy-MM-dd"
      },
    "aggs": {
      "bucket_truncate": {
        "bucket_sort": {
          "from": 0,
          "size": 20
        }
      }
    }
    }
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

解释

  • 第一个size
    表示返回0条数据(hits中的数据)
  • 第一个aggs
    表示对@timestamp按照天进行分组,并将结果进行日期格式化

  • 第二个aggs
    对结果进行排序,这里没有排序,只做了截断(分页)

这样就实现了对聚合的结果进行了分页

备注

获取分组后,分了几组(总数),可以再次调用接口查询数据,取查询到数据的个数即可(记得去掉第二的aggs),这是目前想到最笨的办法,如果你有更好的办法可以分享一下呦!
  • 1

官网:
https://www.elastic.co/guide/en/elasticsearch/reference/6.8/search-aggregations-pipeline-bucket-sort-aggregation.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/49402
推荐阅读
相关标签
  

闽ICP备14008679号