### Elasticsearch Version

master

### Installed Plugins

_No response_

### Java Version

_bundled_

### OS Version

all

### Problem Description

cat indices API in time_series mode is NPE, The reproduce steps is below:

### Steps to Reproduce

```
# step 1
PUT _index_template/test
{
  "index_patterns": [
    "test"
  ],
  "template": {
    "settings": {
      "index.routing_path": "foo"
    },
    "mappings": {
      "properties": {
        "foo": {
          "type": "keyword",
          "time_series_dimension": true
        }
      }
    }
  },
  "data_stream": {
    "index_mode": "time_series"
  }
}

# step 2
PUT _data_stream/test

# step 3
GET _cluster/state/metadata/test
GET _cat/indices/test?v
```
server/src/main/java/org/elasticsearch/cluster/metadata/DataStream.java
public static final String FIXED_TIMESTAMP_FIELD = "@timestamp";
        static ParseField NAME_FIELD = new ParseField("name");
        @SuppressWarnings("unchecked")
        private static final ConstructingObjectParser<TimestampField, Void> PARSER = new ConstructingObjectParser<>(
            "timestamp_field",
            args -> {
                if (FIXED_TIMESTAMP_FIELD.equals(args[0]) == false) {
                    throw new IllegalArgumentException("unexpected timestamp field [" + args[0] + "]");
                }
                return TIMESTAMP_FIELD;
            }
        );
        static {
            PARSER.declareString(ConstructingObjectParser.constructorArg(), NAME_FIELD);
        }
        private final String name;
        public TimestampField(String name) {
            if (FIXED_TIMESTAMP_FIELD.equals(name) == false) {
                throw new IllegalArgumentException("unexpected timestamp field [" + name + "]");
            }
            this.name = name;
        }
        public TimestampField(StreamInput in) throws IOException {