如:索引中有两个 styleCode(类似spu)跟 goodsCode(类似sku)区分商品;现在需要根据品牌信息为七匹狼的数据使用goodsCode就行统计。
json
POST xxx_goods_info/_search
{
"query": {
"bool": {
"must": [{
"term": {
"brand": {
"value": "七匹狼"
}
}
},
{
"match": {
"ngStatus": "sj"
}
}
]
}
},
"aggs": {
"brand_terms_count": {
"terms": {
"script": "if(doc.brand.value=='七匹狼'){return doc.goodsCode}else{return doc.styleCode}",
"size": 10
}
}
}
}
- 查询时使用term和match过滤指定的品牌信息和商品状态
- aggs.brand_terms_count 使用script对统计来源进行处理,逻辑较为简单,如果是七匹狼品牌,返回goodsCode,其他使用styleCode。
参数也可以使用params传递,script脚本改成如下:
json
POST xxx_goods_info/_search
{
"query": {
"bool": {
"must": [{
"term": {
"brand": {
"value": "七匹狼"
}
}
},
{
"match": {
"ngStatus": "sj"
}
}
]
}
},
"aggs": {
"brand_terms_count": {
"terms": {
"script": {
"source": "if(doc.brand.value==params.brand){return doc.goodsCode}else{return doc.styleCode}",
"lang": "painless",
"params": {
"brand":"七匹狼"
}
},
"size": 10
}
}
}
}