ESQL loads `text` fields that are either stored in the index (having `"store": true` in the mapping) or by parsing the `_source` and extracting the text value.  Text fields support [synthetic _source](https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-source-field.html#synthetic-source) if one of the two requirements are met:

1. the text field sets  `"store": true`  in the mapping
1. they have a [keyword](https://www.elastic.co/guide/en/elasticsearch/reference/current/keyword.html#keyword-synthetic-source) sub-field that supports synthetic _source 

In the latter case (when `text` field is not stored, but contains a `keyword` sub-field) querying for the `text` field returns an `IllegalArgumentException` with the following error message: `Cannot access source from scripts in synthetic mode`

### Steps to Reproduce

Run the following yaml test:

```yaml
---
"text with synthetic source":
  - do:
      indices.create:
        index: test2
        body:
          mappings:
            _source:
              mode: synthetic
            properties:
              "emp_no":
                type: long
              name:
                type: keyword
              job:
                type: text
                fields:
                  raw:
                    type: keyword

  - do:
      bulk:
        index: test2
        refresh: true
        body:
          - { "index": { } }
          - { "emp_no": 10, "name": "Jenny", "job": "IT Director" }
          - { "index": { } }
          - { "emp_no": 20, "name": "John", "job": "Payroll Specialist" }

  - do:
      esql.query:
        body:
          query: 'from test2 | sort emp_no | keep job'

  - match: { columns.0.name: "job" }
  - match: { columns.0.type: "text" }

  - length: { values: 2 }
  - match: { values.0.0: "IT Director" }
  - match: { values.1.0: "Payroll Specialist" }
```

Returns the following error: 

```
java.lang.IllegalArgumentException: Cannot access source from scripts in synthetic mode
    at org.elasticsearch.server@8.11.0-SNAPSHOT/org.elasticsearch.index.query.SearchExecutionContext.lambda$lookup$2(SearchExecutionContext.java:400)
    at org.elasticsearch.server@8.11.0-SNAPSHOT/org.elasticsearch.search.lookup.SearchLookup.getSource(SearchLookup.java:144)
    at org.elasticsearch.server@8.11.0-SNAPSHOT/org.elasticsearch.index.fielddata.SourceValueFetcherSortedBinaryIndexFieldData$SourceValueFetcherSortedBinaryDocValues.advanceExact(SourceValueFetcherSortedBinaryIndexFieldData.java:113)
    at org.elasticsearch.compute.lucene.BlockDocValuesReader$BytesValuesReader.read(BlockDocValuesReader.java:525)
    at org.elasticsearch.compute.lucene.BlockDocValuesReader$BytesValuesReader.readValuesFromSingleDoc(BlockDocValuesReader.java:520)
    at org.elasticsearch.compute.lucene.ValuesSourceReaderOperator.loadFromManyLeaves(ValuesSourceReaderOperator.java:105)
    at org.elasticsearch.compute.lucene.ValuesSourceReaderOperator.process(ValuesSourceReaderOperator.java:89)
    at org.elasticsearch.compute.operator.AbstractPageMappingOperator.getOutput(AbstractPageMappingOperator.java:67)
    at org.elasticsearch.compute.operator.Driver.runSingleLoopIteration(Driver.java:163)
    at org.elasticsearch.compute.operator.Driver.run(Driver.java:115)
    at org.elasticsearch.compute.operator.Driver$1.doRun(Driver.java:259)
    at org.elasticsearch.server@8.11.0-SNAPSHOT/org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:26)
    at org.elasticsearch.server@8.11.0-SNAPSHOT/org.elasticsearch.common.util.concurrent.TimedRunnable.doRun(TimedRunnable.java:33)
    at org.elasticsearch.server@8.11.0-SNAPSHOT/org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:983)
    at org.elasticsearch.server@8.11.0-SNAPSHOT/org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:26)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
    at java.base/java.lang.Thread.run(Thread.java:1623)
```
x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/planner/EsPhysicalOperationProviders.java
import org.elasticsearch.compute.lucene.LuceneOperator;
import org.elasticsearch.compute.lucene.LuceneSourceOperator;
import org.elasticsearch.compute.lucene.LuceneTopNSourceOperator;
import org.elasticsearch.compute.lucene.ValueSources;
import org.elasticsearch.compute.lucene.ValuesSourceReaderOperator;
import org.elasticsearch.compute.operator.Operator;
import org.elasticsearch.compute.operator.OrdinalsGroupingOperator;
import org.elasticsearch.index.mapper.NestedLookup;
import org.elasticsearch.index.query.SearchExecutionContext;
import org.elasticsearch.index.search.NestedHelper;
import org.elasticsearch.logging.LogManager;
import org.elasticsearch.logging.Logger;
import org.elasticsearch.search.internal.AliasFilter;
import org.elasticsearch.search.internal.SearchContext;
import org.elasticsearch.search.sort.SortBuilder;
import org.elasticsearch.xpack.esql.plan.physical.AggregateExec;
import org.elasticsearch.xpack.esql.plan.physical.EsQueryExec;
import org.elasticsearch.xpack.esql.plan.physical.EsQueryExec.FieldSort;
import org.elasticsearch.xpack.esql.plan.physical.FieldExtractExec;
import org.elasticsearch.xpack.esql.planner.LocalExecutionPlanner.DriverParallelism;
import org.elasticsearch.xpack.esql.planner.LocalExecutionPlanner.LocalExecutionPlannerContext;
import org.elasticsearch.xpack.esql.planner.LocalExecutionPlanner.PhysicalOperation;
import org.elasticsearch.xpack.esql.type.EsqlDataTypes;
import org.elasticsearch.xpack.ql.expression.Attribute;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Function;
import static org.elasticsearch.common.lucene.search.Queries.newNonNestedFilter;
import static org.elasticsearch.compute.lucene.LuceneSourceOperator.NO_LIMIT;
public class EsPhysicalOperationProviders extends AbstractPhysicalOperationProviders {