### Elasticsearch Version

7.16.2

### Installed Plugins

_No response_

### Java Version

_bundled_

### OS Version

Cloud

### Problem Description

When using the `final_pipeline` option and the `date match index` in a pipeline to process data, the final_pipeline appears to run twice.  This can be shown by using the `append` processor which adds two of the same values or a `rename` processor which shows a failure, but it will show the name of a field changed and shows a failure due to the `old` named field not being present.

Also referenced in a [discuss topic](https://discuss.elastic.co/t/with-final-pipeline-and-a-pipeline-specified-the-final-pipeline-appears-to-be-running-twice-with-index-date-math-processor/296593) to confirm that the example is valid.

Additional note: This seems to run fine on a 7.6.2 environment, so something between that and 7.16.2 may have caused this issue.  #69727 or #75047 could be related.

### Steps to Reproduce

Append method of showing the `final_pipeline` running twice:

```
PUT _ingest/pipeline/test-final-pipeline
{
  "processors": [
    {
      "append": {
        "field": "pipeline",
        "value": "completed"
      }
    }
  ]
}

PUT _template/test-template
{
  "index_patterns": [
    "test*"
  ],
  "settings": {
    "final_pipeline": "test-final-pipeline",
    "number_of_shards": 2
  }
}

POST /test-1/_doc
{
  "time-field": "2021-02-10T12:02:01.789Z",
  "CONTENT": "blah1"
}

PUT /_ingest/pipeline/routing-test-pipeline
{
  "description": "Time series DAY pipeline",
  "processors": [
     {
         "date_index_name": {
             "field": "time-field",
             "index_name_prefix": "test-",
             "date_rounding": "d",
             "index_name_format": "yyyy-MM-dd"
         }
     }
 ]
}

POST /test-1/_doc?pipeline=routing-test-pipeline
{
  "time-field": "2021-02-10T12:02:01.789Z",
  "CONTENT": "blah2"
}
```

Rename processor used to show a failure.  
```
PUT _ingest/pipeline/test-final-pipeline
{
  "processors": [
    {
      "rename": {
        "field": "CONTENT",
        "target_field": "MALCONTENT"
      }
    }
  ]
}

PUT _template/test-template
{
  "index_patterns": [
    "test*"
  ],
  "settings": {
    "final_pipeline": "test-final-pipeline",
    "number_of_shards": 2
  }
}

POST /test-1/_doc
{
  "time-field": "2021-02-10T12:02:01.789Z",
  "CONTENT": "blah1"
}

PUT /_ingest/pipeline/routing-test-pipeline
{
  "description": "Time series DAY pipeline",
  "processors": [
     {
         "date_index_name": {
             "field": "time-field",
             "index_name_prefix": "test-",
             "date_rounding": "d",
             "index_name_format": "yyyy-MM-dd"
         }
     }
 ]
}

POST /test-1/_doc?pipeline=routing-test-pipeline
{
  "time-field": "2021-02-10T12:02:01.789Z",
  "CONTENT": "blah2"
}
```

### Logs (if relevant)

_No response_
server/src/main/java/org/elasticsearch/ingest/IngestDocument.java
|| value instanceof ZonedDateTime) {
                return value;
            } else if (value instanceof Date date) {
                return date.clone();
            } else {
                throw new IllegalArgumentException("unexpected value type [" + value.getClass() + "]");
            }
    }
    public static Set<String> getAllFields(Map<String, Object> input) {
        return getAllFields(input, "");
    }
    @SuppressWarnings("unchecked")
    private static Set<String> getAllFields(Map<String, Object> input, String prefix) {
        Set<String> allFields = Sets.newHashSet();
        input.forEach((k, v) -> {
            allFields.add(prefix + k);
            if (v instanceof Map<?, ?> mapValue) {
                allFields.addAll(getAllFields((Map<String, Object>) mapValue, prefix + k + "."));
            }
        });
        return allFields;
    }
    /**
     * Executes the given pipeline with for this document unless the pipeline has already been executed
     * for this document.
     *
     * @param pipeline the pipeline to execute
     * @param handler handles the result or failure
     */
    public void executePipeline(Pipeline pipeline, BiConsumer<IngestDocument, Exception> handler) {