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

3088

被折叠的 条评论
为什么被折叠?



