【发布时间】:2017-05-22 23:37:39
【问题描述】:
假设我有这个布尔查询:
"bool" : {
"should" : [
{ "term" : { "FirstName" : "Sandra" } },
{ "term" : { "LastName" : "Jones" } }
],
"minimum_should_match" : 1
}
意思是我想匹配所有名字为 Sandra 或姓 Jones 的人。
现在,有什么方法可以对仅匹配第一个词的所有文档执行聚合?
例如,我想获得任何名为 Sandra 的人所拥有的“奖品”的所有独特价值。通常我会这样做:
"query": {
"match": {
"FirstName": "Sandra"
}
},
"aggs": {
"Prizes": {
"terms": {
"field": "Prizes"
}
}
}
有没有办法将两者结合起来,所以我只需要执行一个查询,它会返回所有名字为 Sandra 或姓 Jones 的人,并且只对名字为 Sandra 的人进行聚合?
非常感谢!
【问题讨论】:
-
为什么需要这样做?
-
@Lax 好吧,我需要所有名字为 Sandra 的人,所有姓氏为 Jones 的人,以及所有名字为 Sandra 的人的聚合,所以我想知道是否可以合并它们变成一个查询而不是两个(所有名字为 Sandra 的人 + 聚合,以及所有姓氏为 Jones 的人)。我猜只是一厢情愿。
标签: elasticsearch elasticsearch-aggregation