我的文档包括name
和date_year
字段,我的目标是找到最近添加的名称(例如,十个最后添加的名称以及它们出现的第一年和文档总数)。因此,我在name
上有一个术语聚合,该术语按date_year
上的最小子聚合排序:
{
"aggs": {
"group_by_name": {
"terms": {
"field": "name",
"order": {
"start_year": "desc"
}
},
"aggs": {
"start_year": {
"min": {
"field": "date_year"
}
}
}
}
}
}
未在size
下添加terms
时,这将返回意外结果。例如,第一个存储桶具有doc_count
1和start_year
2015,而我确定有数十个具有此名称的文档,最早的date_year
是1870。当我添加时size
足够大,结果是准确的。例如:
{
"aggs": {
"group_by_name": {
"terms": {
"field": "name",
"size": 10000, <------ large enough value
"order": {
"start_year": "desc"
}
},
"aggs": {
"start_year": {
"min": {
"field": "date_year"
}
}
}
}
}
}
谁能向我解释是什么原因造成的,以及如何限制返回的存储桶数量?我需要的在SQL中看起来像这样:
select name, min(year), count(*) from documents group by name order by min(year) desc limit 10