Неожиданные результаты при использовании минимальной субагрегации в Elasticsearch
Мои документы включают поля 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