### Elasticsearch Version

8.2.0

### Installed Plugins

_No response_

### Java Version

18

### OS Version

Linux (Docker)

### Problem Description

The geoip ingest processor adds a `_geoip_database_unavailable_*` tag field to documents when the database cannot be downloaded, even if the source field does not exist and `ignore_missing` is set.

### Steps to Reproduce

1. Run Elasticsearch with `ingest.geoip.downloader.enabled=false`
2. Execute the following request in the console:

```
POST /_ingest/pipeline/_simulate
{
  "pipeline": {
    "processors": [
      {
        "geoip": {
          "field": "client.ip",
          "target_field": "client.geo",
          "ignore_missing": true
        }
      }
    ]
  },
  "docs": [
    {
      "_index": "index",
      "_source": {}
    },
    {
      "_index": "index",
      "_source": {"client": {"ip": "8.8.8.8"}}
    }
  ]
}
```

This produces:

```
{
  "docs" : [
    {
      "doc" : {
        "_index" : "index",
        "_id" : "_id",
        "_source" : {
          "tags" : [
            "_geoip_database_unavailable_GeoLite2-City.mmdb"
          ]
        },
        "_ingest" : {
          "timestamp" : "2022-06-03T02:33:16.49692803Z"
        }
      }
    },
    {
      "doc" : {
        "_index" : "index",
        "_id" : "_id",
        "_source" : {
          "client" : {
            "ip" : "8.8.8.8"
          },
          "tags" : [
            "_geoip_database_unavailable_GeoLite2-City.mmdb"
          ]
        },
        "_ingest" : {
          "timestamp" : "2022-06-03T02:33:16.496934873Z"
        }
      }
    }
  ]
}
```

I would expect only the second document to have the tag added.

### Logs (if relevant)

_No response_
modules/ingest-geoip/src/main/java/org/elasticsearch/ingest/geoip/GeoIpProcessor.java
public Factory(DatabaseNodeService databaseNodeService, ClusterService clusterService) {
            this.databaseNodeService = databaseNodeService;
            this.clusterService = clusterService;
        }
        @Override
        public Processor create(
            final Map<String, Processor.Factory> registry,
            final String processorTag,
            final String description,
            final Map<String, Object> config
        ) throws IOException {
            String ipField = readStringProperty(TYPE, processorTag, config, "field");
            String targetField = readStringProperty(TYPE, processorTag, config, "target_field", "geoip");
            String databaseFile = readStringProperty(TYPE, processorTag, config, "database_file", "GeoLite2-City.mmdb");
            List<String> propertyNames = readOptionalList(TYPE, processorTag, config, "properties");
            boolean ignoreMissing = readBooleanProperty(TYPE, processorTag, config, "ignore_missing", false);
            boolean firstOnly = readBooleanProperty(TYPE, processorTag, config, "first_only", true);
            
            Object value = config.remove("fallback_to_default_databases");
            if (value != null) {
                DEPRECATION_LOGGER.warn(DeprecationCategory.OTHER, "default_databases_message", DEFAULT_DATABASES_DEPRECATION_MESSAGE);
            }
            DatabaseReaderLazyLoader lazyLoader = databaseNodeService.getDatabase(databaseFile);
            if (useDatabaseUnavailableProcessor(lazyLoader, databaseFile)) {
                return new DatabaseUnavailableProcessor(processorTag, description, databaseFile);
            } else if (lazyLoader == null) {
                throw newConfigurationException(TYPE, processorTag, "database_file", "database file [" + databaseFile + "] doesn't exist");
            }
            final String databaseType;
            try {