跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 有没有 elasticsearch 熟悉的大佬,分组聚合分页的问题
未分類
2 11 月 2020

有没有 elasticsearch 熟悉的大佬,分组聚合分页的问题

有没有 elasticsearch 熟悉的大佬,分组聚合分页的问题

資深大佬 : dyllen 3

实现类似 SQL 里面 group by 分组去重之后分页输出列表。

我的做法如下:

  1. 获取当前页的数据列表

用的是composite桶聚合获取一页的数据,下一页用after参数。

获取到一页数据列表之后,拿到 id 列表再去主表里面查询具体的数据。

agg 部分:

'aggs' => [     'uid' => [         'composite' => [          'size' => 20,          'sources' => [                 [                     'uid' => [                         'terms' => [                         'field' => 'uid',                         'order' => 'desc',                     ],           ],          ],         ],     ], ] 

用 uid 聚合和排序

  1. 获取数据总数

用的cardinality和sum_bucket组和。

聚合之后在计算桶的总数,size 设置一个比较大的数。

agg 部分:

'aggs' => [             'uid' => [                 'terms' => [                     'field' => 'uid',                     'size' => 5000,                 ],                 'aggs' => [                     'uid_count' => [                         'cardinality' => [                             'field' => 'uid',                         ],                     ],                 ],             ],             'sun_uid' => [                 'sum_bucket' => [                     'buckets_path' => 'uid>uid_count',                 ],             ],         ] 

方法对不对呀?总感觉 es 做分页列表输出不是太好,只能获取下一页。

ui 需求分页需求是可以跳页,随便点哪页的,用 es 的话,一般怎么满足的?还是说满足不来,只能改需求了。

大佬有話說 (5)

  • 資深大佬 : smart9527

    用 from, size

  • 資深大佬 : DavinBin23

    使用 Terms Aggregation,按照某些字段分组聚合,得到 n 个桶,桶里面装的是分组的数据,再用 bucket_sort 对桶进行分页

  • 主 資深大佬 : dyllen

    @smart9527 这个我知道,聚合用不了,分页数据有限。

  • 主 資深大佬 : dyllen

    @DavinBin23 我去试了下,我用某个字段分组聚合,用另一个字段排序是不是就不行了?

  • 資深大佬 : DavinBin23

    @dyllen 可以的,bucket_sort 支持
    “bucket_sort”: {
    “sort”: {
    “xxx”: {
    “order”: “desc”
    }
    },
    “from”: 10,
    “size”: 10
    }

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具