**Build scan:**
https://gradle-enterprise.elastic.co/s/efva2osgphkle/tests/:plugins:mapper-size:internalClusterTest/org.elasticsearch.index.mapper.size.SizeMappingIT/testGetWithFields

**Reproduction line:**
`./gradlew ':plugins:mapper-size:internalClusterTest' --tests "org.elasticsearch.index.mapper.size.SizeMappingIT.testGetWithFields" -Dtests.seed=FA954CBDA791C93D -Dtests.locale=en-GB -Dtests.timezone=Canada/Saskatchewan -Druntime.java=17`

**Applicable branches:**
main

**Reproduces locally?:**
Didn't try

**Failure history:**
https://gradle-enterprise.elastic.co/scans/tests?tests.container=org.elasticsearch.index.mapper.size.SizeMappingIT&tests.test=testGetWithFields

**Failure excerpt:**
```
java.lang.Exception: Test abandoned because suite timeout was reached.

  at __randomizedtesting.SeedInfo.seed([FA954CBDA791C93D]:0)

```
server/src/main/java/org/elasticsearch/search/fetch/subphase/FetchFieldsPhase.java
@Override
    public FetchSubPhaseProcessor getProcessor(FetchContext fetchContext) {
        FetchFieldsContext fetchFieldsContext = fetchContext.fetchFieldsContext();
        if (fetchFieldsContext == null) {
            return null;
        }
        FieldFetcher fieldFetcher = FieldFetcher.create(fetchContext.getSearchExecutionContext(), fetchFieldsContext.fields());
        return new FetchSubPhaseProcessor() {
            @Override
            public void setNextReader(LeafReaderContext readerContext) {
                fieldFetcher.setNextReader(readerContext);
            }
            @Override
            public void process(HitContext hitContext) throws IOException {
                SearchHit hit = hitContext.hit();
                Map<String, DocumentField> documentFields = fieldFetcher.fetch(hitContext.source(), hit.docId());
                for (Map.Entry<String, DocumentField> entry : documentFields.entrySet()) {
                    hit.setDocumentField(entry.getKey(), entry.getValue());
                }
            }
        };
    }
}