### Elasticsearch Version

8.6.2

### Installed Plugins

_No response_

### Java Version

_bundled_

### OS Version

gcp.es.datahot.n2.68x10x45

### Problem Description
When I attempt to utilize the downsampling feature with ILM and metricbeat system data it results in data being deleted without any warning of an error or problem having occurred. I've tried downsampling without ILM and instead performing the operation manually and the downsampled index still has no documents in it.

Upon further investigation of the issue, we noticed that the server logs showed an issue that the agent.version field was unable to be parsed. As a workaround to this problem, I enabled dynamic mapping so that all strings are mapped to keyword fields instead of the default interpretation of the field as a text field with a keyword subfield. This fixed the issue, but I think it should be addressed that the first configuration results in lost data without any warning of an error in the UI.

### Expected Behavior
Expected that the ILM policy and Time Series Data Stream would summarize more granular system data from metricbeat into less granular timestamps. I also expect that if there are any errors it would warn me rather than failing and losing documents. I expected to see a downsampled index that contains fewer documents and less granular timestamps.

### Actual Behavior
The downsampled index contains no documents at all. Visualizations using this TSDS essentially reset when the downsampling operation completes. No way to recover the data.

### Steps to Reproduce

1. Create an index template that is missing an explicit mapping for agent.version.
https://gist.github.com/jake-pankey/9931c31d4c49457cb058f486d2939d1c

2. Create an ILM Policy that includes the downsampling step
```
PUT _ilm/policy/tsds-metrics
{
  "policy": {
    "phases": {
      "hot": {
        "min_age": "0ms",
        "actions": {
          "rollover": {
            "max_primary_shard_size": "50gb",
            "max_age": "10m"
          },
          "set_priority": {
            "priority": 100
          },
          "downsample": {
            "fixed_interval": "1m"
          }
        }
      }
    }
  }
}
```

3. Run metricbeat with system module enabled. The index template looks for pattern "metricbeat-tsds*" so the setting `output.elasticsearch.index: metricbeat-tsds` should be specified

4. Wait for the ILM policy to rollover and downsample. The resulting downsampled index contains 0 documents. Logs in my case showed `failed to populate rollup index. Failures: [{null=org.elasticsearch.index.mapper.MapperParsingException: failed to parse field [agent.version]`

### Logs (if relevant)

_No response_
x-pack/plugin/rollup/src/main/java/org/elasticsearch/xpack/downsample/FieldValueFetcher.java
/*
 * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
 * or more contributor license agreements. Licensed under the Elastic License
 * 2.0; you may not use this file except in compliance with the Elastic License
 * 2.0.
 */
package org.elasticsearch.xpack.downsample;
import org.apache.lucene.index.LeafReaderContext;
import org.elasticsearch.index.fielddata.FormattedDocValues;
import org.elasticsearch.index.fielddata.IndexFieldData;
import org.elasticsearch.index.mapper.MappedFieldType;
import org.elasticsearch.index.mapper.NumberFieldMapper;
import org.elasticsearch.index.query.SearchExecutionContext;
import org.elasticsearch.search.DocValueFormat;
import org.elasticsearch.xpack.aggregatemetric.mapper.AggregateDoubleMetricFieldMapper;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
 * Utility class used for fetching field values by reading field data
 */
class FieldValueFetcher {
    private final MappedFieldType fieldType;
    private final IndexFieldData<?> fieldData;
    private final AbstractDownsampleFieldProducer rollupFieldProducer;
    protected FieldValueFetcher(MappedFieldType fieldType, IndexFieldData<?> fieldData) {
        this.fieldType = fieldType;