### Description

For certain mappings the following query:
```
POST _query?error_trace
{
  “query”: “”"
  from * [metadata _index] | limit 10000
  “”"
}
```

triggers a CCE:
```
{ "error": {
    "root_cause": [
      {
        "type": "class_cast_exception",
        "reason": "class org.elasticsearch.xpack.ql.type.UnsupportedEsField cannot be cast to class org.elasticsearch.xpack.ql.type.InvalidMappedField (org.elasticsearch.xpack.ql.type.UnsupportedEsField and org.elasticsearch.xpack.ql.type.InvalidMappedField are in unnamed module of loader java.net.FactoryURLClassLoader @6eb5b9e7)",
        "stack_trace": """org.elasticsearch.ElasticsearchException$1: class org.elasticsearch.xpack.ql.type.UnsupportedEsField cannot be cast to class org.elasticsearch.xpack.ql.type.InvalidMappedField (org.elasticsearch.xpack.ql.type.UnsupportedEsField and org.elasticsearch.xpack.ql.type.InvalidMappedField are in unnamed module of loader java.net.FactoryURLClassLoader @6eb5b9e7)

Caused by: java.lang.ClassCastException: class org.elasticsearch.xpack.ql.type.UnsupportedEsField cannot be cast to class 
org.elasticsearch.xpack.ql.type.InvalidMappedField (org.elasticsearch.xpack.ql.type.UnsupportedEsField and org.elasticsearch.xpack.ql.type.InvalidMappedField are in unnamed module of loader java.net.FactoryURLClassLoader @6eb5b9e7)
	at org.elasticsearch.xpack.ql.index.IndexResolver.buildIndices(IndexResolver.java:771)
	at org.elasticsearch.xpack.ql.index.IndexResolver.mergedMappings(IndexResolver.java:466)
	at org.elasticsearch.xpack.ql.index.IndexResolver.lambda$resolveAsMergedMapping$8(IndexResolver.java:381)
	at org.elasticsearch.server@8.11.0/org.elasticsearch.action.ActionListenerImplementations$ResponseWrappingActionListener.onResponse(ActionListenerImplementations.java:236)
	... 21 more
```
x-pack/plugin/ql/src/main/java/org/elasticsearch/xpack/ql/index/IndexResolver.java
final String[] concreteIndices;
                if (capIndices != null) {
                    concreteIndices = capIndices;
                } else {
                    concreteIndices = fieldCapsResponse.getIndices();
                }
                Set<String> uniqueAliases = new LinkedHashSet<>();
                
                for (String index : concreteIndices) {
                    List<AliasMetadata> concreteIndexAliases = aliases != null ? aliases.get(index) : null;
                    if (concreteIndexAliases != null) {
                        for (AliasMetadata e : concreteIndexAliases) {
                            uniqueAliases.add(e.alias());
                        }
                    }
                    
                    if (pattern == null || pattern.matcher(splitQualifiedIndex(index).v2()).matches()) {
                        String indexName = indexNameProcessor.apply(index);
                        Fields indexFields = indices.computeIfAbsent(indexName, k -> new Fields());
                        EsField field = indexFields.flattedMapping.get(fieldName);
                        if (field == null || (invalidField != null && (field instanceof InvalidMappedField) == false)) {
                            createField(typeRegistry, fieldName, indexFields, fieldCaps, invalidField, typeCap);