我正在寻找获得聚合的解决方案,每个字段之一,但在不同的聚合中应用不同的查询条件。
我有一系列产品,其中包含以下属性:type
,color
,brand
。
用户已选择:brand
= 差距,color
= 白色,以及type
= 凉鞋。显示每个聚合的各种类似产品的计数:
brand
汇总的查询条件:color
= 白色,type
= 凉鞋 color
聚合的查询条件:brand
= Gap ,以及
type
= 凉鞋 type
汇总的查询条件:brand
= 差距,color
= 白色 这可以在一个ElasticSearch查询中完成吗?
答案 0 :(得分:1)
您可以为每个聚合创建三个聚合filter
聚合,并在其中添加您想要的查询。我使用了最简单的一个 - bool
和term
- 只是为了展示高级方法:
"aggs": {
"brand_agg": {
"filter": {
"bool": {
"must": [
{
"term": {
"color": "white"
}
},
{
"term": {
"type": "sandal"
}
}
]
}
}
},
"color_agg": {
"filter": {
"bool": {
"must": [
{
"term": {
"brand": "gap"
}
},
{
"term": {
"type": "sandal"
}
}
]
}
}
},
"type_agg": {
"filter": {
"bool": {
"must": [
{
"term": {
"color": "white"
}
},
{
"term": {
"brand": "gap"
}
}
]
}
}
}
}