top_metrics is a metric aggregation that does not support sub aggregations. Currently if you add sub aggregation they will be silently ignored. Instead it should throw an error reporting it to the user. It is very easy to reproduce by using the example in the docs:

```
POST /test/_bulk?refresh
{"index": {}}
{"s": 1, "m": 3.1415}
{"index": {}}
{"s": 2, "m": 1.0}
{"index": {}}
{"s": 3, "m": 2.71828}

POST /test/_search?filter_path=aggregations
{
  "aggs": {
    "tm": {
      "top_metrics": {
        "metrics": {"field": "m"},
        "sort": {"s": "desc"}
      },
      "aggs": {
        "min": {
          "min": {
            "field": "m"
          }
        }
      }
    }
  }
}
```
x-pack/plugin/analytics/src/main/java/org/elasticsearch/xpack/analytics/topmetrics/TopMetricsAggregationBuilder.java
TopMetricsAggregator.SegmentOrdsValues::new,
            false
        );
    }
    /**
     * Default to returning only a single top metric.
     */
    private static final int DEFAULT_SIZE = 1;
    public static final ConstructingObjectParser<TopMetricsAggregationBuilder, String> PARSER = new ConstructingObjectParser<>(
        NAME,
        false,
        (args, name) -> {
            @SuppressWarnings("unchecked")
            List<SortBuilder<?>> sorts = (List<SortBuilder<?>>) args[0];
            int size = args[1] == null ? DEFAULT_SIZE : (Integer) args[1];
            if (size < 1) {
                throw new IllegalArgumentException("[size] must be more than 0 but was [" + size + "]");
            }
            @SuppressWarnings("unchecked")
            List<MultiValuesSourceFieldConfig> metricFields = (List<MultiValuesSourceFieldConfig>) args[2];
            return new TopMetricsAggregationBuilder(name, sorts, size, metricFields);
        }
    );
    static {
        PARSER.declareField(
            constructorArg(),
            (p, n) -> SortBuilder.fromXContent(p),
            SORT_FIELD,
            ObjectParser.ValueType.OBJECT_ARRAY_OR_STRING
        );