Downsampling an index with a counter field of type `scaled_float` always fails.

Reproduction:

```
PUT cpu_metrics
{
    "settings": {
        "index": {
            "mode": "time_series",
            "number_of_replicas": 0,
            "time_series": {
                "start_time": "2000-01-01T00:00:00Z",
                "end_time": "2099-12-31T23:59:59Z"
            },
            "routing_path": [
                "hostname"
            ]
        }
    },
    "mappings": {
        "dynamic": "strict",
        "properties": {
            "hostname": {
                "type": "keyword",
                "time_series_dimension": "true"
            },
            "cumulative_usage_user": {
                "type": "scaled_float",
                "scaling_factor": 100,
                "time_series_metric": "counter"
            },
            "cumulative_usage_system": {
                "type": "scaled_float",
                "scaling_factor": 100,
                "time_series_metric": "counter"
            },
            "cumulative_usage_idle": {
                "type": "scaled_float",
                "scaling_factor": 100,
                "time_series_metric": "counter"
            },
            "cumulative_usage_nice": {
                "type": "scaled_float",
                "scaling_factor": 100,
                "time_series_metric": "counter"
            },
            "@timestamp": {
                "type": "date"
            }
        }
    }
}

POST /cpu_metrics/_doc
{
    "hostname": "my-host",
    "@timestamp": "2000-01-01T00:00:00Z",
    "cumulative_usage_user": 0,
    "cumulative_usage_system": 0,
    "cumulative_usage_idle": 0,
    "cumulative_usage_nice": 0
}

PUT /cpu_metrics/_settings
{
    "index.blocks.write": true
}

POST cpu_metrics/_downsample/cpu_metrics-downsampled-1h
{
    "fixed_interval": "1h"
}
```

Response:

```
{
    "error": {
        "root_cause": [
            {
                "type": "mapper_parsing_exception",
                "reason": "Failed to parse mapping: Field [scaling_factor] is required"
            }
        ],
        "type": "mapper_parsing_exception",
        "reason": "Failed to parse mapping: Field [scaling_factor] is required",
        "caused_by": {
            "type": "illegal_argument_exception",
            "reason": "Field [scaling_factor] is required"
        }
    },
    "status": 400
}
```


The end result is that the downsampling process doesn't start and the downsampled index isn't even created.
Note that `scaling_factor` is defined in the mappings of the source index, but the downsample operation fails to included it into the mapping of the downsampled index.
x-pack/plugin/downsample/src/main/java/org/elasticsearch/xpack/downsample/TransportDownsampleAction.java
MappingVisitor.visitMapping(sourceIndexMappings, (field, mapping) -> {
            if (helper.isTimeSeriesMetric(field, mapping)) {
                try {
                    addMetricFieldMapping(builder, field, mapping);
                } catch (IOException e) {
                    throw new ElasticsearchException("Error while adding metric for field [" + field + "]");
                }
            }
        });
    }
    private static void addTimestampField(
        final DownsampleConfig config,
        Map<String, Object> sourceIndexMappings,
        final XContentBuilder builder
    ) throws IOException {
        final String timestampField = config.getTimestampField();
        final String dateIntervalType = config.getIntervalType();
        final String dateInterval = config.getInterval().toString();
        final String timezone = config.getTimeZone();
        builder.startObject(timestampField);
        MappingVisitor.visitMapping(sourceIndexMappings, (field, mapping) -> {
            try {
                if (timestampField.equals(field)) {
                    final String timestampType = String.valueOf(mapping.get("type"));
                    builder.field("type", timestampType != null ? timestampType : DateFieldMapper.CONTENT_TYPE);
                    if (mapping.get("format") != null) {
                        builder.field("format", mapping.get("format"));
                    }
                }
            } catch (IOException e) {