ESQL does not support cross-cluster search yet; when a CCS pattern is used in a FROM command, the error message is not very clear for the end user

<img width="590" alt="Screenshot 2023-11-27 alle 15 38 02" src="https://github.com/elastic/elasticsearch/assets/459289/5af48932-4a4c-416a-a926-7bd486d282a5">

We should make it more user friendly
x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plugin/ComputeService.java
final var sessionId = request.sessionId();
            final var exchangeSink = exchangeService.getSinkHandler(sessionId);
            parentTask.addListener(() -> exchangeService.finishSinkHandler(sessionId, new TaskCancelledException("task cancelled")));
            final ActionListener<Void> listener = new OwningChannelActionListener<>(channel).map(nullValue -> new DataNodeResponse());
            acquireSearchContexts(request.shardIds(), request.aliasFilters(), ActionListener.wrap(searchContexts -> {
                var computeContext = new ComputeContext(sessionId, searchContexts, request.configuration(), null, exchangeSink);
                runCompute(parentTask, computeContext, request.plan(), ActionListener.wrap(unused -> {
                    
                    exchangeSink.addCompletionListener(
                        ActionListener.releaseAfter(listener, () -> exchangeService.finishSinkHandler(sessionId, null))
                    );
                }, e -> {
                    exchangeService.finishSinkHandler(sessionId, e);
                    listener.onFailure(e);
                }));
            }, e -> {
                exchangeService.finishSinkHandler(sessionId, e);
                listener.onFailure(e);
            }));
        }
    }
    record ComputeContext(
        String sessionId,
        List<SearchContext> searchContexts,
        EsqlConfiguration configuration,
        ExchangeSourceHandler exchangeSource,
        ExchangeSinkHandler exchangeSink
    ) {}
}