我是elasticsearch的新手,并尝试执行一个类似于过滤和分组的查询。
我能够过滤(使用过滤器)并使用'terms'按查询执行组,但无法构建同时执行这两项操作的查询。
这是我没有分组的查询
{
"size": 0,
"aggs": {
"group_by_city": {
"filter": {
"bool": {
"must": [
{
"term": {
"account": "a"
}
},
{
"term": {
"appName": "b"
}
},
{
"range": {
"timestamp": {
"from": 1464713893304,
"to": 1465022700000
}
}
}
]
}
},
"aggs": {
"average_timing": {
"avg": {
"field": "t.timing1"
}
}
}
}
}
}
对于我曾经使用的分组:
{
"size": 0,
"aggs": {
"group_by_country": {
"terms": {
"field": "country"
},
"aggs": {
"average_balance": {
"avg": {
"field": "t.timing1"
}
}
}
}
}
}
任何想法如何将两者结合起来?
答案 0 :(得分:1)
当我们必须对来自ElasticSearch的数据子集进行一些分析时,我们遇到了类似的问题。我设法通过合并filter
和aggs
来解决这个问题。根据您的疑问,我可以想到这样的事情:
{
"size": 0,
"filter": {
"bool": {
"must": [
{
"term": { "account": "a" }
},
{
"term": { "appName": "b" }
},
{
"range": {
"timestamp": {
"from": 1464713893304,
"to": 1465022700000
}
}
}
]
}
},
"aggs": {
"group_by_country": {
"terms": { "field": "country" },
"aggs": {
"average_balance": {
"avg": {
"field": "t.timing1"
}
}
}
}
}
}
我希望我对你的问题的理解是对的,这对你有帮助。