Мои документы включают в себя поля 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