在elasticsearch中使用最小子聚合时出现意外结果

sf6xfgos  于 2021-06-14  发布在  ElasticSearch
关注(0)|答案(0)|浏览(237)

我的文档包括 name 以及 date_year ,我的目标是找到最近添加的名称(例如,最后添加的10个名称及其出现的第一年和文档总数)。因此,我有一个条件 name ,由上的最小子聚合排序 date_year :

{
  "aggs": {
    "group_by_name": {
      "terms": {
        "field": "name",
        "order": {
          "start_year": "desc"
        }
      },
      "aggs": {
        "start_year": {
          "min": {
            "field": "date_year"
          }
        }
      }
    }
  }
}

当不添加时,这将返回意外的结果 size 低于 terms . 例如,第一个bucket 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

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题