ES group by 排序

本文介绍了如何使用 Elasticsearch 实现按佣金率排序查询商品的场景。当商品有专属佣金时,优先显示专属佣金,否则显示普通佣金。数据结构包含 item_id(商品ID)、promoter_id(用户ID,0代表普通佣金)和 rate(佣金率)。针对用户ID10263604,利用类似 MySQL 的语法在 ES 中进行查询并按佣金率和售价排序。
摘要由CSDN通过智能技术生成

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

数据结构-关键字段:
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, 
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值