zoukankan      html  css  js  c++  java
  • es聚合后排序

    注意:

    • es版本至少6.1以上

    语句:

    GET 76/sessions/_search
    {
      "size": 0,
      "query": {
        "bool": {
          "must": [
            {
              "term": {
                "sid": {
                  "value": "76e14832"
                }
              }
            },
            {
              "range": {
                "v_ymd": {
                  "format": "yyyy-MM-dd", 
                  "gte": "2018-02-02",
                  "lte": "2018-02-02"
                }
              }
            }
          ]
        }
      },
      "aggs": {
        "pv": {
          "nested": {
            "path": "scene"
          },
          "aggs": {
            "pv2": {
              "terms": {
                "field": "scene.pid",
                "size": 1000,
                "shard_size": 10000
              },
              "aggs": {
                "pv_count": {
                  "value_count": {
                    "field": "scene.pid"
                  }
                },
                "r_bucket_sort": {
                  "bucket_sort": {
                    "sort": {
                      "pv_count": {
                        "order": "desc"
                      }
                    },
                    "from": 10,
                    "size": 10
                  }
                }
              }
            }
          }
        }
      }
    }
    

    部分解释:

    • 最外层的size=0,表示该查询不返回详情,只返回聚合结果;
    • query中使用一个must列表对数据进行过滤;
    • terms实现分桶的功能,类似于sql中的分组功能;
    • terms中的shard_size表示每个分片返回的数据量,size表示返回的桶的数据,会收到bucket_sort中size的限制;
    • value_count实现计数的一个功能;
    • sort指定排序的字段和排序的升降序,可以使用聚合后的字段;
    • 使用bucket_sort的功能,from、size分别表示从第几条数据开始,取多少条数据。

    特别注意:

    • 在terms中使用bucket_sort功能的时候,terms中分组的size大小设置应该大于bucket_sort中的from+size的大小,否则会因为terms中size的大小限制了返回的数据。
    • bucket_sort的sort排序是针对父聚合返回的结果进行排序的,比如上述terms返回的结果为1000条,那么bucket_sort仅对这1000条进行排序。
  • 相关阅读:
    为什么需要防火墙?
    比较流行的前端框架
    java基础面试题
    单列模式
    简单而且好用的随机验证码
    java中的九大隐藏变量.
    搭建Disuz论坛社区
    BZOJ 1006 [HNOI2008]神奇的国度
    COJ 0252 HDNOIP201304阻断传染
    BZOJ 1005 [HNOI2008]明明的烦恼
  • 原文地址:https://www.cnblogs.com/chenmz1995/p/11265470.html
Copyright © 2011-2022 走看看