目前遇到一个问题,现在有下面的聚合计算。目的是计算sdkVer的版本分布,然后对device进行唯一值聚合,这样就能得到sdkVer的分布情况(前五名,基于唯一的device来计算的),我们希望只看前5名sdkVer的分布情况,这样的计算是能满足需求的,但是我们还需要看到前五名之外的sdkVer的占据的比例,也就是1 2 3 4 5 Others这六个部分,目前我能想到就是两次聚合,第一次算出前五名的值,第二次排出这前五名的值做聚合来计算。
不知道是否有方法能一次返回我需要的结果,希望各位给点建议。 谢谢
																				{
  "size": 0,
  "query": {
    "bool": {
      "filter": [
        {
          "range": {
            "meetingtime": {
              "from": 1619798400,
              "to": 1621439999,
              "include_lower": true,
              "include_upper": true,
              "time_zone": "UTC",
              "format": "epoch_second",
              "boost": 1.0
            }
          }
        },
        {
          "term": {
            "type": {
              "value": "test",
              "boost": 1.0
            }
          }
        }
      ],
      "adjust_pure_negative": true,
      "boost": 1.0
    }
  },
  "aggregations": {
    "sdkVer": {
      "terms": {
        "field": "sdkVer",
        "size": 5,
        "min_doc_count": 1,
        "shard_min_doc_count": 0,
        "show_term_doc_count_error": false,
        "order": [
          {
            "device": "desc"
          },
          {
            "_key": "asc"
          }
        ]
      },
      "aggregations": {
        "device": {
          "cardinality": {
            "field": "device"
          }
        }
      }
    }
  }
}不知道是否有方法能一次返回我需要的结果,希望各位给点建议。 谢谢
	
2 个回复
thewind
赞同来自: w_b 、Tsukiand
thewind
赞同来自: