我是elasticsearch的新手,并尝试执行一个查询,该查询执行类似于过滤和分组的操作。
我能够过滤(通过使用过滤器)并使用“术语”按查询执行组,但无法构建同时执行这两项操作的查询。
这是我没有分组的查询
{
"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"
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
对于分组我使用过:
{
"size": 0,
"aggs": {
"group_by_country": {
"terms": {
"field": "country"
},
"aggs": {
"average_balance": {
"avg": {
"field": "t.timing1"
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
任何想法如何将两者结合起来?
当我们不得不对来自 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"
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我希望我对你的问题的理解是正确的,这对你有帮助。
| 归档时间: |
|
| 查看次数: |
8427 次 |
| 最近记录: |