针对唯一字段值的{ElasticSearch聚合

时间:2016-04-20 18:44:31

标签: elasticsearch

我想收集字段名称的统计数据" CpuEff"对于每个唯一字段" DESIRED_CMS_Dataset"。所以我写了这个,

curl -XPOST 'http://localhost:9200/cms-2016-03-30/job/_search?pretty=true' -D'
{
        "aggregations" : {
                "data" : {
                  "terms": {
                        "field": "DESIRED_CMSDataset"
                        "order": {
                                "cnt" : "desc"
                        }
                   },
                   "aggregations" : {
                        "data_stats" : {
                                "extended_stats" : { "field" : "CpuEff" }
                        }
                   }
                 }
        }
}'

这给了我一个既不给我统计数据也不给我一个字段DESIRED_CMSDataset。相反,我得到了一堆

{
      "_index" : "cms-2016-03-30",
      "_type" : "job",
      "_id" : "crab3-4@vocms066.cern.ch#6248657.0#1459314096",
      "_score" : 1.0,
      "_source" : {
        "CoreHr" : 1.1066666666666667,
        "DataCollectionDate" : 1459318128,
        "JobStartDate" : 1459314144,
        "Requirements" : false,
...

所以我想修复我的查询,以便我只看到DESIRED_CMSDataset以及this说我应该得到的结果(即avg,sum,...)DESIRED_CMSDataset的每个唯一值。

1 个答案:

答案 0 :(得分:3)

默认情况下,elasticsearch会在搜索请求中返回20个文档,您可以添加" size" :0 仅输出聚合

curl -XPOST 'http://localhost:9200/cms-2016-03-30/job/_search?pretty=true' -D'
{
        "size": 0, 
        "aggs" : {
                "data" : {
                  "terms": {
                        "field": "DESIRED_CMSDataset"
                        "size": 0,
                        "order": {
                                "_count" : "desc"
                        }
                   },
                   "aggs" : {
                        "data_stats" : {
                                "extended_stats" : { "field" : "CpuEff" }
                        }
                   }
                 }
        }
}'