我有一个查询,该查询根据给定的过滤器汇总数据,如下所述。
{
"size": 0,
"aggs": {
"country": {
"terms": {
"field": "country",
"size": 10,
"order": {
"messages": "desc"
}
},
"aggs": {
"messages": {
"sum": {
"field": "count"
}
}
}
}
}
},
"query": {
"bool": {
"must": [],
"filter": [
{
"terms": {
"country": [
"US", "FR"
]
}
},
{
"terms": {
"locale": [
"en_US", "en_FR"
]
}
}
]
}
}
}
此查询返回的两个国家的所有数据都具有语言环境(我在过滤器中提到)数据
like:US-> en_US,en_FR和FR-> en_US,en_FR。
现在我想获取 US-> en_US和FR-> en_FR 的数据(这需要在查询的Filters逻辑中进行构造)。并且还需要相应地进行汇总(基于国家/地区和过滤条件)
为此,我正在努力寻找或构架Elastic search中的查询。 任何建议都会有帮助
答案 0 :(得分:0)
您可以这样做:
{
"size": 0,
"aggs": {
"country": {
"terms": {
"field": "country",
"size": 10,
"order": {
"messages": "desc"
}
},
"aggs": {
"messages": {
"sum": {
"field": "count"
}
}
}
}
},
"query": {
"bool": {
"must": [],
"minimum_should_match": 1,
"should": [
{
"bool": {
"filter": [
{
"term": {
"country": "US"
}
},
{
"term": {
"locale": "en_US"
}
}
]
}
},
{
"bool": {
"filter": [
{
"term": {
"country": "FR"
}
},
{
"term": {
"locale": "en_FR"
}
}
]
}
}
]
}
}
}