ES实现nested类型聚合以及子聚合排序

ES实现nested类型聚合以及子聚合排序

需求业务说明

针对日销量索引,需要分析品牌、品类等日销量趋势,以及近7天,近30天等销量靠前的品牌、品类等。
涉及到 nested 聚合,以及聚合排序。
指定日期范围价格趋势,销量趋势查询排序

品牌近7天销量

//品类近7天销量
POST /goods_sku_sales2_v20200109/_search
{
  "size": 0,
  "query": {
    "match_all": {
      
    }
  },
  "aggs": {
    "group_by_brand": {
      "terms": {
        "field": "standardCategoryParentName",
        "size": 10,
        "order" : { "7days>filter_type>sum_sale" : "desc" }
      },
      "aggs": {
        "7days": {
          "nested": {
            "path": "salesInfo"
          },
          "aggs": {
            "filter_type": {
              "filter": {
                "range": {
                  "salesInfo.saleDt": {
                    "gte": "2020-01-12",
                    "lte": "2020-01-18",
                    "format": "yyyy-MM-dd"
                  }
                }
              },
              "aggs": {
                "sum_sale": {
                  "sum": {
                    "field": "salesInfo.salesVolume"
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

品牌近7日销量趋势

//品牌日销量趋势
POST /goods_sku_sales2_v20200615/_search
{
  "size": 0,
  "query": {
    "match": {
      "standardBrandName": "完美日记"
    }
  },
  "aggs": {
    "by_day": {
      "nested": {
        "path": "salesInfo"
      },
      "aggs": {
        "filter_type": {
          "filter": {
            "range": {
              "salesInfo.saleDt": {
                "gte": "2020-06-10",
                "lte": "2020-06-18",
                "format": "yyyy-MM-dd"
              }
            }
          },
          "aggs": {
            "salesInfo_dt": {
              "terms": {
                "field": "salesInfo.saleDt",
                "size": 90
              },
              "aggs": {
                "sum_sale": {
                  "sum": {
                    "field": "salesInfo.salesVolume"
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

指定某个sku日期范围销量趋势和价格趋势

GET /goods_sku_sales2_v20200305/_search?pretty
{
  "_source": "",
  "query": {
    "bool": {
      "must": [
        {
          "nested": {
            "path": "salesInfo",
            "query": {
              "bool": {
                "must": [
                  {
                    "range": {
                      "salesInfo.saleDt": {
                        "gte": "2020-01-12",
                        "lte": "2020-01-18",
                        "format": "yyyy-MM-dd"
                      }
                    }
                  }
                ]
              }
            },
            "inner_hits": {
              "sort": {
                "salesInfo.saleDt": {
                  "order": "asc"
                }
              },
              "size": 10
            }
          }
        },
        {
          "match_phrase": {
            "skuPk": "00_592671059999_0"
          }
        }
      ]
    }
  }
}

电商商品日销量索引mapping

{
  "mapping": {
    "_doc": {
      "dynamic": "true",
      "dynamic_templates": [
        {
          "integers": {
            "match": "salesVolume*",
            "mapping": {
              "type": "long"
            }
          }
        },
        {
          "doubles": {
            "match": "sales*",
            "mapping": {
              "type": "double"
            }
          }
        },
        {
          "keywords": {
            "match": "saleDt",
            "mapping": {
              "type": "keyword"
            }
          }
        }
      ],
      "properties": {
        "channel": {
          "type": "keyword"
        },
        "declareIngredientNames": {
          "type": "text",
          "analyzer": "simple_comma_analyzer",
          "fielddata": true
        },
        "goodsName": {
          "type": "text",
          "term_vector": "with_positions_offsets",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          },
          "analyzer": "ik
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值