### Description

In [siren federate](https://siren.io/federate/) we extend the `SearchService` to create `SearchContext` instances. In 8.8 this is not possible anymore because the `createContext` method takes the `ResultsType` enum which is package private.

https://github.com/elastic/elasticsearch/blob/b640c217cccab67dce7d954bc92b6b519c102b16/server/src/main/java/org/elasticsearch/search/SearchService.java#L992-L998

In order to be able to keep on calling that method from another package, the visibility of the enum `ResultsType` should be increased to `protected`.
server/src/main/java/org/elasticsearch/search/SearchService.java
}
    private static <T> void runAsync(Executor executor, CheckedSupplier<T, Exception> executable, ActionListener<T> listener) {
        executor.execute(ActionRunnable.supply(listener, executable));
    }
    /**
     * The returned {@link SearchPhaseResult} will have had its ref count incremented by this method.
     * It is the responsibility of the caller to ensure that the ref count is correctly decremented
     * when the object is no longer needed.
     */
    private SearchPhaseResult executeQueryPhase(ShardSearchRequest request, SearchShardTask task) throws Exception {
        final ReaderContext readerContext = createOrGetReaderContext(request);
        try (
            Releasable scope = tracer.withScope(task);
            Releasable ignored = readerContext.markAsUsed(getKeepAlive(request));
            SearchContext context = createContext(readerContext, request, task, ResultsType.QUERY, true)
        ) {
            tracer.startTrace("executeQueryPhase", Map.of());
            final long afterQueryTime;
            try (SearchOperationListenerExecutor executor = new SearchOperationListenerExecutor(context)) {
                loadOrExecuteQueryPhase(request, context);
                if (context.queryResult().hasSearchContext() == false && readerContext.singleSession()) {
                    freeReaderContext(readerContext.id());
                }
                afterQueryTime = executor.success();
            } finally {
                tracer.stopTrace();
            }
            if (request.numberOfShards() == 1) {
                
                context.addFetchResult();