ES group by 排序

背景:
同一个商品可以配置专属佣金率,也可配置普通佣金率,当用户有专属佣金时,取专属佣金,否则取普通佣金。
一个商品可以只配置普通佣金,也可只配置专属佣金,也可两个都配置。

数据结构-关键字段:
item_id商品ID,promoter_id用户ID(若0代表普通,普通对所有人生效),rate佣金率。

需求:用户查看可分销的商品列表,并展示佣金,且可根据佣金率、售价排序。

以用户ID10263604为例:
mysql语法为:

-- max(promoter_id)作用:若商品同时配置了普通和专属,取专属,即promoter_id大的那条记录。
SELECT max(promoter_id),item_id,promoter_id,rate FROM `shop_promoter_rate` where delete_mark=0 GROUP BY item_id ORDER BY rate desc
 LIMIT 20;

ES语法:


# 
GET /cdc_promoter/_search
{
  "query": {
    "bool": {
      "should": [
        {"term": {
          "promoter_id": 0
        }},
        {"term": {
          "promoter_id": 10263604
        }}
      ],
      "minimum_should_match": 1, 
      "must": [
        {
          "term": {
            "delete_mark": 0
          }
        }
      ]
    }
  },
  "size": 0,  
  "aggs": {
    "count_item": {
      "terms": {
        "field": "item_id",
        "size": 10000,
        "order": {
          "max_rate": "desc"
        }
      },
      "aggs": {
        "top_hits_promoter_id": {
          "top_hits": {
            "size": 1,
            "sort": [{
              "promoter_id": {
                "order": "desc"
              }
            }]
          }
        },
        "max_rate" : {
          "max": {
            "field": "rate"
          }
        },
        "sort_page": { 
          "bucket_sort": { 
            "sort": [
              {
                "max_rate": { 
                  "order": "desc"
                }
              }
            ],
            "from": 4,  
            "size": 3
          }
        }
      }
    }
  }
}

查询结果

{
  "took" : 1,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 245,
    "max_score" : 0.0,
    "hits" : [ ]
  },
  "aggregations" : {
    "count_item" : {
      "doc_count_error_upper_bound" : -1,
      "sum_other_doc_count" : 243,
      "buckets" : [
        {
          "key" : 346693,
          "doc_count" : 1,
          "top_hits_promoter_id" : {
            "hits" : {
              "total" : 1,
              "max_score" : null,
              "hits" : [
                {
                  "_index" : "cdc_promoter_202206081400",
                  "_type" : "_doc",
                  "_id" : "158",
                  "_score" : null,
                  "_source" : {
                    "id" : 16,
                    "shop_id" : 105360,
                    "item_id" : 346693,
                    "promoter_id" : 0,
                    "rate_type" : 0,
                    "rate" : 10000,
                    "gmt_created" : "2022-06-08T13:53:03+08:00",
                    "gmt_modified" : "2022-06-08T15:45:31+08:00",
                    "delete_mark" : 0,
                    "delete_timestamp" : 0,
                    "audit_item_id" : null,
                    "__op" : "u",
                    "__null_ts_ms" : 1654739723658,
                    "sales_volume" : 0,
                    "seller_user_status" : 5,
                    "seller_user_delete_mark" : 0,
                    "seller_expire_time" : "2022-04-20T10:10:11+08:00"
                  },
                  "sort" : [
                    0
                  ]
                }
              ]
            }
          },
          "max_rate" : {
            "value" : 10000.0
          }
        },
        {
          "key" : 347088,
          "doc_count" : 1,
          "top_hits_promoter_id" : {
            "hits" : {
              "total" : 1,
              "max_score" : null,
              "hits" : [
                {
                  "_index" : "cdc_promoter_202206081400",
                  "_type" : "_doc",
                  "_id" : "168",
                  "_score" : null,
                  "_source" : {
                    "id" : 16,
                    "shop_id" : 105360,
                    "item_id" : 347088,
                    "promoter_id" : 0,
                    "rate_type" : 0,
                    "rate" : 9000,
                    "gmt_created" : "2022-06-08T13:53:04+08:00",
                    "gmt_modified" : "2022-06-08T15:45:32+08:00",
                    "delete_mark" : 0,
                    "delete_timestamp" : 0,
                    "audit_item_id" : null,
                    "__op" : "u",
                    "__null_ts_ms" : 1654739723658,
                    "seller_user_status" : 5,
                    "seller_user_delete_mark" : 0,
                    "seller_expire_time" : "2022-04-20T10:10:11+08:00",
                    "sales_volume" : 0
                  },
                  "sort" : [
                    0
                  ]
                }
              ]
            }
          },
          "max_rate" : {
            "value" : 9000.0
          }
        }
      ]
    }
  }
}



版权声明:本文为joy_pan原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。