现在,我正在Elastic Search中进行top_hits聚合,该聚合将我的数据按字段分组,按日期对分组进行排序,然后选择前1个。
我需要以某种方式分页此聚合结果,以便可以传递pageSize和pageNumber,但我不知道如何。
除此之外,我还需要此聚合的总结果,以便我们可以在Web界面的表中显示它。
聚合看起来像这样:
POST my_index/_search
{
"size": 0,
"aggs": {
"top_artifacts": {
"terms": {
"field": "artifactId.keyword"
},
"aggs": {
"top_artifacts_hits": {
"top_hits": {
"size": 1,
"sort": [{
"date": {
"order": "desc"
}
}]
}
}
}
}
}
}
答案 0 :(得分:0)
如果我了解您的需求,那么您应该可以通过Composite Aggregation进行分页。您仍然可以在分页中传递size
参数,但是您的from
将是存储桶的关键。
POST my_index/_search
{
"size": 0,
"aggs": {
"top_artifacts": {
"composite": {
"sources": [
{
"artifact": {
"terms": {
"field": "artifactId.keyword"
}
}
}
]
,
"size": 1, // OPTIONAL SIZE (How many buckets)
"after": {
"artifact": "FOO_BAZ" // Buckets after this bucket key
}
},
"aggs": {
"hits": {
"top_hits": {
"size": 1,
"sort": [
{
"timestamp": {
"order": "desc"
}
}
]
}
}
}
}
}
}