### Elasticsearch Version

main

### Installed Plugins

_No response_

### Java Version

_bundled_

### OS Version

macOS

### Problem Description

The pipeline defined in `behavioral_analytics-events-final_pipeline.json` uses the new `ignore_missing` setting for the `uri_parts` ingest processor added in #95068.

The pipeline is referenced in the index template `behavioral_analytics-events-settings.json`. 

```
"final_pipeline": "behavioral_analytics-events-final_pipeline",
...
```

That template may be PUT as a node is upgraded during a rolling upgrade, in that mixed cluster scenario only the upgraded nodes recognise the new `ignore_missing` setting. 

### Steps to Reproduce

The problem appears in the rolling upgrade test failure tracked in #95360

```
./gradlew ':x-pack:qa:rolling-upgrade:v8.2.0#twoThirdsUpgradedTest' -Dtests.class="org.elasticsearch.upgrades.MlTrainedModelsUpgradeIT" -Dtests.method="testTrainedModelInference" -Dtests.seed=D0F64DC8162BB439 -Dtests.bwc=true -Dtests.locale=be-BY -Dtests.timezone=Africa/Lubumbashi -Druntime.java=20
```

### Logs (if relevant)

```
[2023-05-02T19:25:31,393][WARN ][o.e.i.IngestService      ] [v8.0.1-2] failed to update ingest pipelines
org.elasticsearch.ElasticsearchParseException: processor [uri_parts] doesn't support one or more provided configuration parameters [ignore_missing]
	at org.elasticsearch.ingest.ConfigurationUtils.readProcessor(ConfigurationUtils.java:588) ~[elasticsearch-8.0.1.jar:8.0.1]
	at org.elasticsearch.ingest.ConfigurationUtils.readProcessor(ConfigurationUtils.java:547) ~[elasticsearch-8.0.1.jar:8.0.1]
	at org.elasticsearch.ingest.ConfigurationUtils.readProcessorConfigs(ConfigurationUtils.java:467) ~[elasticsearch-8.0.1.jar:8.0.1]
	at org.elasticsearch.ingest.Pipeline.create(Pipeline.java:82) ~[elasticsearch-8.0.1.jar:8.0.1]
	at org.elasticsearch.ingest.IngestService.innerUpdatePipelines(IngestService.java:922) ~[elasticsearch-8.0.1.jar:8.0.1]
	at org.elasticsearch.ingest.IngestService.applyClusterState(IngestService.java:898) [elasticsearch-8.0.1.jar:8.0.1]
	at org.elasticsearch.cluster.service.ClusterApplierService.callClusterStateAppliers(ClusterApplierService.java:544) [elasticsearch-8.0.1.jar:8.0.1]
	at org.elasticsearch.cluster.service.ClusterApplierService.callClusterStateAppliers(ClusterApplierService.java:531) [elasticsearch-8.0.1.jar:8.0.1]
	at org.elasticsearch.cluster.service.ClusterApplierService.applyChanges(ClusterApplierService.java:503) [elasticsearch-8.0.1.jar:8.0.1]
	at org.elasticsearch.cluster.service.ClusterApplierService.runTask(ClusterApplierService.java:428) [elasticsearch-8.0.1.jar:8.0.1]
	at org.elasticsearch.cluster.service.ClusterApplierService$UpdateTask.run(ClusterApplierService.java:154) [elasticsearch-8.0.1.jar:8.0.1]
	at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingRunnable.run(ThreadContext.java:717) [elasticsearch-8.0.1.jar:8.0.1]
	at org.elasticsearch.common.util.concurrent.PrioritizedEsThreadPoolExecutor$TieBreakingPrioritizedRunnable.runAndClean(PrioritizedEsThreadPoolExecutor.java:260) [elasticsearch-8.0.1.jar:8.0.1]
	at org.elasticsearch.common.util.concurrent.PrioritizedEsThreadPoolExecutor$TieBreakingPrioritizedRunnable.run(PrioritizedEsThreadPoolExecutor.java:223) [elasticsearch-8.0.1.jar:8.0.1]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [?:?]
	at java.lang.Thread.run(Thread.java:833) [?:?]
	Suppressed: org.elasticsearch.ElasticsearchParseException: processor [uri_parts] doesn't support one or more provided configuration parameters [ignore_missing]
		at org.elasticsearch.ingest.ConfigurationUtils.readProcessor(ConfigurationUtils.java:588) ~[elasticsearch-8.0.1.jar:8.0.1]
		at org.elasticsearch.ingest.ConfigurationUtils.readProcessor(ConfigurationUtils.java:547) ~[elasticsearch-8.0.1.jar:8.0.1]
		at org.elasticsearch.ingest.ConfigurationUtils.readProcessorConfigs(ConfigurationUtils.java:467) ~[elasticsearch-8.0.1.jar:8.0.1]
		at org.elasticsearch.ingest.Pipeline.create(Pipeline.java:82) ~[elasticsearch-8.0.1.jar:8.0.1]
		at org.elasticsearch.ingest.IngestService.innerUpdatePipelines(IngestService.java:922) ~[elasticsearch-8.0.1.jar:8.0.1]
		at org.elasticsearch.ingest.IngestService.applyClusterState(IngestService.java:898) [elasticsearch-8.0.1.jar:8.0.1]
		at org.elasticsearch.cluster.service.ClusterApplierService.callClusterStateAppliers(ClusterApplierService.java:544) [elasticsearch-8.0.1.jar:8.0.1]
		at org.elasticsearch.cluster.service.ClusterApplierService.callClusterStateAppliers(ClusterApplierService.java:531) [elasticsearch-8.0.1.jar:8.0.1]
		at org.elasticsearch.cluster.service.ClusterApplierService.applyChanges(ClusterApplierService.java:503) [elasticsearch-8.0.1.jar:8.0.1]
		at org.elasticsearch.cluster.service.ClusterApplierService.runTask(ClusterApplierService.java:428) [elasticsearch-8.0.1.jar:8.0.1]
		at org.elasticsearch.cluster.service.ClusterApplierService$UpdateTask.run(ClusterApplierService.java:154) [elasticsearch-8.0.1.jar:8.0.1]
		at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingRunnable.run(ThreadContext.java:717) [elasticsearch-8.0.1.jar:8.0.1]
		at org.elasticsearch.common.util.concurrent.PrioritizedEsThreadPoolExecutor$TieBreakingPrioritizedRunnable.runAndClean(PrioritizedEsThreadPoolExecutor.java:260) [elasticsearch-8.0.1.jar:8.0.1]
		at org.elasticsearch.common.util.concurrent.PrioritizedEsThreadPoolExecutor$TieBreakingPrioritizedRunnable.run(PrioritizedEsThreadPoolExecutor.java:223) [elasticsearch-8.0.1.jar:8.0.1]
		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) [?:?]
		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [?:?]
		at java.lang.Thread.run(Thread.java:833) [?:?]
	Suppressed: org.elasticsearch.ElasticsearchParseException: processor [uri_parts] doesn't support one or more provided configuration parameters [ignore_missing]
		at org.elasticsearch.ingest.ConfigurationUtils.readProcessor(ConfigurationUtils.java:588) ~[elasticsearch-8.0.1.jar:8.0.1]
		at org.elasticsearch.ingest.common.ForEachProcessor$Factory.create(ForEachProcessor.java:187) ~[?:?]
		at org.elasticsearch.ingest.common.ForEachProcessor$Factory.create(ForEachProcessor.java:168) ~[?:?]
		at org.elasticsearch.ingest.ConfigurationUtils.readProcessor(ConfigurationUtils.java:583) ~[elasticsearch-8.0.1.jar:8.0.1]
		at org.elasticsearch.ingest.ConfigurationUtils.readProcessor(ConfigurationUtils.java:547) ~[elasticsearch-8.0.1.jar:8.0.1]
		at org.elasticsearch.ingest.ConfigurationUtils.readProcessorConfigs(ConfigurationUtils.java:467) ~[elasticsearch-8.0.1.jar:8.0.1]
		at org.elasticsearch.ingest.Pipeline.create(Pipeline.java:82) ~[elasticsearch-8.0.1.jar:8.0.1]
		at org.elasticsearch.ingest.IngestService.innerUpdatePipelines(IngestService.java:922) ~[elasticsearch-8.0.1.jar:8.0.1]
		at org.elasticsearch.ingest.IngestService.applyClusterState(IngestService.java:898) [elasticsearch-8.0.1.jar:8.0.1]
		at org.elasticsearch.cluster.service.ClusterApplierService.callClusterStateAppliers(ClusterApplierService.java:544) [elasticsearch-8.0.1.jar:8.0.1]
		at org.elasticsearch.cluster.service.ClusterApplierService.callClusterStateAppliers(ClusterApplierService.java:531) [elasticsearch-8.0.1.jar:8.0.1]
		at org.elasticsearch.cluster.service.ClusterApplierService.applyChanges(ClusterApplierService.java:503) [elasticsearch-8.0.1.jar:8.0.1]
		at org.elasticsearch.cluster.service.ClusterApplierService.runTask(ClusterApplierService.java:428) [elasticsearch-8.0.1.jar:8.0.1]
		at org.elasticsearch.cluster.service.ClusterApplierService$UpdateTask.run(ClusterApplierService.java:154) [elasticsearch-8.0.1.jar:8.0.1]
		at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingRunnable.run(ThreadContext.java:717) [elasticsearch-8.0.1.jar:8.0.1]
		at org.elasticsearch.common.util.concurrent.PrioritizedEsThreadPoolExecutor$TieBreakingPrioritizedRunnable.runAndClean(PrioritizedEsThreadPoolExecutor.java:260) [elasticsearch-8.0.1.jar:8.0.1]
		at org.elasticsearch.common.util.concurrent.PrioritizedEsThreadPoolExecutor$TieBreakingPrioritizedRunnable.run(PrioritizedEsThreadPoolExecutor.java:223) [elasticsearch-8.0.1.jar:8.0.1]
		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) [?:?]
		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [?:?]
		at java.lang.Thread.run(Thread.java:833) [?:?]
```
x-pack/qa/rolling-upgrade/src/test/java/org/elasticsearch/upgrades/MLModelDeploymentsUpgradeIT.java
import org.junit.Before;
import org.junit.BeforeClass;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Base64;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import static org.elasticsearch.client.WarningsHandler.PERMISSIVE;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.hasSize;
import static org.hamcrest.Matchers.oneOf;
public class MLModelDeploymentsUpgradeIT extends AbstractUpgradeTestCase {
    
    static final String BASE_64_ENCODED_MODEL =
        "UEsDBAAACAgAAAAAAAAAAAAAAAAAAAAAAAAUAA4Ac2ltcGxlbW9kZWwvZGF0YS5wa2xGQgoAWlpaWlpaWlpaWoACY19fdG9yY2hfXwp"
            + "TdXBlclNpbXBsZQpxACmBfShYCAAAAHRyYWluaW5ncQGIdWJxAi5QSwcIXOpBBDQAAAA0AAAAUEsDBBQACAgIAAAAAAAAAAAAAAAAAA"
            + "AAAAAdAEEAc2ltcGxlbW9kZWwvY29kZS9fX3RvcmNoX18ucHlGQj0AWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaW"
            + "lpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWnWOMWvDMBCF9/yKI5MMrnHTQsHgjt2aJdlCEIp9SgWSTpykFvfXV1htaYds0nfv473Jqhjh"
            + "kAPywbhgUbzSnC02wwZAyqBYOUzIUUoY4XRe6SVr/Q8lVsYbf4UBLkS2kBk1aOIPxbOIaPVQtEQ8vUnZ/WlrSxTA+JCTNHMc4Ig+Ele"
            + "s+Jod+iR3N/jDDf74wxu4e/5+DmtE9mUyhdgFNq7bZ3ekehbruC6aTxS/c1rom6Z698WrEfIYxcn4JGTftLA7tzCnJeD41IJVC+U07k"
            + "umUHw3E47Vqh+xnULeFisYLx064mV8UTZibWFMmX0p23wBUEsHCE0EGH3yAAAAlwEAAFBLAwQUAAgICAAAAAAAAAAAAAAAAAAAAAAAJ"
            + "wA5AHNpbXBsZW1vZGVsL2NvZGUvX190b3JjaF9fLnB5LmRlYnVnX3BrbEZCNQBaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpa"
            + "WlpaWlpaWlpaWlpaWlpaWlpaWlpaWrWST0+DMBiHW6bOod/BGS94kKpo2Mwyox5x3pbgiXSAFtdR/nQu3IwHiZ9oX88CaeGu9tL0efq"
            + "+v8P7fmiGA1wgTgoIcECZQqe6vmYD6G4hAJOcB1E8NazTm+ELyzY4C3Q0z8MsRwF+j4JlQUPEEo5wjH0WB9hCNFqgpOCExZY5QnnEw7"
            + "ME+0v8GuaIs8wnKI7RigVrKkBzm0lh2OdjkeHllG28f066vK6SfEypF60S+vuYt4gjj2fYr/uPrSvRv356TepfJ9iWJRN0OaELQSZN3"
            + "FRPNbcP1PTSntMr0x0HzLZQjPYIEo3UaFeiISRKH0Mil+BE/dyT1m7tCBLwVO1MX4DK3bbuTlXuy8r71j5Aoho66udAoseOnrdVzx28"
            + "UFW6ROuO/lT6QKKyo79VU54emj9QSwcInsUTEDMBAAAFAwAAUEsDBAAACAgAAAAAAAAAAAAAAAAAAAAAAAAZAAYAc2ltcGxlbW9kZWw"
            + "vY29uc3RhbnRzLnBrbEZCAgBaWoACKS5QSwcIbS8JVwQAAAAEAAAAUEsDBAAACAgAAAAAAAAAAAAAAAAAAAAAAAATADsAc2ltcGxlbW"