通过聚合过滤 elasticsearch 查询
filtering an elasticsearch query by aggregations
您好,我的问题分为两个部分。
我有一个看起来像
的数据集
{name: "foo",
contracts: [{size: 1}, {size: 3}]},
{name: "bar",
contracts: [{size: 100}, {size: 300}]}
使用指标聚合,我可以计算出所有项目的平均大小。 1+3+100+300 / 4,
然而,是否可以 return 每个项目的平均合同大小?
我希望能够return
{name: "foo",
averageContract: 2},
{name: "bar",
averageContract: 200},
此外,是否可以获取该值并对其进行过滤?
例如match where averageContract > 100 ?
试试这个:
{
"size": 0,
"aggs": {
"item": {
"terms": {
"field": "name.keyword",
"size": 10
},
"aggs": {
"averageContract": {
"avg": {
"field": "contracts.size"
}
},
"selector_avg_contract": {
"bucket_selector": {
"buckets_path": {
"avg": "averageContract"
},
"script": "params.avg > 100"
}
}
}
}
}
}
您好,我的问题分为两个部分。 我有一个看起来像
的数据集{name: "foo",
contracts: [{size: 1}, {size: 3}]},
{name: "bar",
contracts: [{size: 100}, {size: 300}]}
使用指标聚合,我可以计算出所有项目的平均大小。 1+3+100+300 / 4, 然而,是否可以 return 每个项目的平均合同大小?
我希望能够return
{name: "foo",
averageContract: 2},
{name: "bar",
averageContract: 200},
此外,是否可以获取该值并对其进行过滤?
例如match where averageContract > 100 ?
试试这个:
{
"size": 0,
"aggs": {
"item": {
"terms": {
"field": "name.keyword",
"size": 10
},
"aggs": {
"averageContract": {
"avg": {
"field": "contracts.size"
}
},
"selector_avg_contract": {
"bucket_selector": {
"buckets_path": {
"avg": "averageContract"
},
"script": "params.avg > 100"
}
}
}
}
}
}