我有一个产品列表(deal
个实体),我正在尝试按类别创建一个桶聚合,按available_stock
的总和排序。
这一切都运行正常,但我想从未将level
设置为1的结果聚合中排除这些类别(换句话说,我只想在{{1}的类别上保留聚合IS 1)。
我知道elasticsearch提供了“exclude”和“include”参数,但这些只能在我聚合的同一个字段上工作(在这种情况下为level
)
这是我的样本deal.category.id
文件:
deal
这就是查询:
{
"_source": {
"id": 392745,
"category": [
{
"id": 17575,
"level": 2
},
{
"id": 17574,
"level": 1
},
{
"id": 17572,
"level": 0
}
],
"stats": {
"available_stock": 500
}
}
}
我的结果聚合,遗憾地包括级别为{
"query": {
"filtered": {
"query": {
"match_all": {}
},
}
},
"aggs": {
"mainAggregation": {
"terms": {
"field": "deal.category.id",
"order": {
"available_stock": "desc"
},
"size": 3
},
"aggs": {
"available_stock": {
"sum": {
"field": "deal.stats.available_stock"
}
}
}
}
},
"size": 0
}
的类别。
17572
P.S。:目前在ElasticSearch 1.6上
更新1:经过各种子分段组合的各种实验后仍然坚持这个问题。
答案 0 :(得分:0)
我发现这不可能解决,因此决定进行两个单独的查询。