### Elasticsearch Version

8.7.0

### Installed Plugins

_No response_

### Java Version

_bundled_

### OS Version

all

### Problem Description

Downsampling of a time series index without any metric field fails with a validation error:

```
Index <index> does not contain any metric fields;
```

Metric fields are not required in a time series index, unlike dimension fields. For this reason failing downsampling is not consistent with the idea of allowing time series indices without metrics.

### Steps to Reproduce

Create a time series index with at least one dimension field, without any metric field and run a downsample operation (through ILM or through the API endpoint directly).

### Logs (if relevant)

_No response_
x-pack/plugin/rollup/src/test/java/org/elasticsearch/xpack/downsample/DownsampleActionSingleNodeTests.java
.get(sourceIndex)
            .sourceAsMap()
            .get("properties");
        List<Map.Entry<String, String>> labelFieldRollupIndexCloneProperties = (rollupIndexProperties.entrySet()
            .stream()
            .filter(entry -> labelFields.containsKey(entry.getKey()))
            .toList());
        List<Map.Entry<String, String>> labelFieldSourceIndexProperties = (sourceIndexCloneProperties.entrySet()
            .stream()
            .filter(entry -> labelFields.containsKey(entry.getKey()))
            .toList());
        assertEquals(labelFieldRollupIndexCloneProperties, labelFieldSourceIndexProperties);
    }
    private void assertRollupIndexAggregations(
        String sourceIndex,
        String rollupIndex,
        DownsampleConfig config,
        Map<String, TimeSeriesParams.MetricType> metricFields,
        Map<String, String> labelFields
    ) {
        final AggregationBuilder aggregations = buildAggregations(config, metricFields, labelFields, config.getTimestampField());
        Aggregations origResp = aggregate(sourceIndex, aggregations);
        Aggregations rollupResp = aggregate(rollupIndex, aggregations);
        assertEquals(origResp.asMap().keySet(), rollupResp.asMap().keySet());
        StringTerms originalTsIdTermsAggregation = (StringTerms) origResp.getAsMap().values().stream().toList().get(0);
        StringTerms rollupTsIdTermsAggregation = (StringTerms) rollupResp.getAsMap().values().stream().toList().get(0);
        originalTsIdTermsAggregation.getBuckets().forEach(originalBucket -> {
            StringTerms.Bucket rollupBucket = rollupTsIdTermsAggregation.getBucketByKey(originalBucket.getKeyAsString());
            assertEquals(originalBucket.getAggregations().asList().size(), rollupBucket.getAggregations().asList().size());
            InternalDateHistogram originalDateHistogram = (InternalDateHistogram) originalBucket.getAggregations().asList().get(0);