我有一个Elasticsearch查询,其中有一个条件检查issoldout = false
。在此基础上,我没有几个“求和和计数”聚合字段。
但是,如果issoldout = false
未获取任何结果,我想获取聚合值,然后尝试使用issoldout = true
。有什么方法可以不用issoldout = true
进行第二次搜索就可以完成此工作。
最佳答案
您可以按照说明使用_msearch
逐字提交两个查询,但是也可以在同一请求中并行运行它们:
您可以使用filter
聚合来执行此操作,以使其与它们一起下降。同样,您可以只使用terms
聚合来完成此操作,但是当它也是false
时也可以获取它。
{
"query": {
... normal query ...
},
"aggs": {
"group_by_soldout": {
"filter": {
"term": {
"issoldout": true
}
},
"aggs": {
"stats_for_field": {
"stats": {
"field": "your_field"
}
}
}
}
}
}