2017-08-27 24 views
0

我想汇总(总和)Elasticsearch中n个最新项目的值。Elasticsearch 5:关于最近n个项目的属性值的聚合

我尝试了“顶级点击”(按日期字段排序),但是我无法将它聚合 - 它只是返回最新的n个项目。

我有以下查询,做所有项目的值的聚合,但我怎么把它限制 - 比方说 - 20个项目,按日期字段排序?

http://mysearchdomain/index/type/_search?size=0 
{ 
    "aggs": { 
    "agg_name1": { 
     "terms": { 
     "field": "_parent", 
     "size": 2000000 
     }, 

     "aggs": { 
     "agg_name2": { 
      "terms": { 
      "field": "myfield" 
      }, 

      "aggs": { 
      "agg_name3": { 
       "sum": { 
       "field": "fieldToAggregate" 
       } 
      } 
      } 

     } 
     } 

    } 
    } 

} 
+0

您可以在您的聚合中添加过滤器。 https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-filters-aggregation.html –

+0

@ArchitSaxena过滤器如何限制聚合数据集的大小,以及它如何分类?根据文档,它似乎无法做到这一点。 – Scarabas

回答

0

据我所知,这似乎不可能。您试图过滤已经汇总的数据(每个“agg_name1”),这似乎是主要问题;而top_hits将无法​​在已经聚集的数据集上工作。

我认为最好的办法是对每个“agg_name1”做一个top_hits聚合请求,这可能意味着更多的请求(与“agg_name1”的数量相同)。