我想过滤内部具有top_hits聚合的复合聚合的结果。因此,我首先将数据与top_hits分组,然后将其用作复合聚合中的一个子聚合,该复合聚合具有一个基于ID的单一来源,而且我不知道如何过滤这些聚合结果。
我尝试使用过滤器聚合,但是由于复合聚合必须是所有聚合之父,因此我不确定。尝试了这些汇总的不同组合,但没有一个能如我所愿地显示结果。
{
"size": 0,
"aggs": {
"grouped_data": {
"composite": {
"sources": [
{
"artifact": {
"terms": {
"field": "artifactId.keyword"
}
}
}
],
"size": 20
},
"aggs": {
"top_artifacts_hits": {
"top_hits": {
"size": 1,
"sort": [{
"initialDate": {
"order": "desc"
}
}]
}
}
}
}
}
}
我尝试使用query
API进行过滤,但这对我来说不是一个好选择,因为我要应用的过滤器用于分组结果。在主聚合之前使用一些query
会使ElasticSearch查询先然后进行分组。我需要它倒退。我正在AWS下使用ES 6.3。
所以我的文档看起来像这样:
{
"artifactId": "foo",
"clientId": "bar",
"artifactState": "foozz",
"initialDate": 1559745246
}
我需要做的是为每个不同的artifactState
获取基于initialDate
的最后一个artifactId
,这就是为什么我要使用top_hits + Composite。