diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.md
index 16d9ce457603e..e0734bc017f4f 100644
--- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.md
+++ b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.md
@@ -109,5 +109,6 @@
| [KibanaContext](./kibana-plugin-plugins-data-server.kibanacontext.md) | |
| [ParsedInterval](./kibana-plugin-plugins-data-server.parsedinterval.md) | |
| [Query](./kibana-plugin-plugins-data-server.query.md) | |
+| [SearchRequestHandlerContext](./kibana-plugin-plugins-data-server.searchrequesthandlercontext.md) | |
| [TimeRange](./kibana-plugin-plugins-data-server.timerange.md) | |
diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.searchrequesthandlercontext.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.searchrequesthandlercontext.md
new file mode 100644
index 0000000000000..f031ddfbd09af
--- /dev/null
+++ b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.searchrequesthandlercontext.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [SearchRequestHandlerContext](./kibana-plugin-plugins-data-server.searchrequesthandlercontext.md)
+
+## SearchRequestHandlerContext type
+
+Signature:
+
+```typescript
+export declare type SearchRequestHandlerContext = IScopedSearchClient;
+```
diff --git a/src/plugins/data/server/autocomplete/routes.ts b/src/plugins/data/server/autocomplete/routes.ts
index fc6bb0b69c102..c453094ff6874 100644
--- a/src/plugins/data/server/autocomplete/routes.ts
+++ b/src/plugins/data/server/autocomplete/routes.ts
@@ -9,10 +9,9 @@
import { Observable } from 'rxjs';
import { CoreSetup, SharedGlobalConfig } from 'kibana/server';
import { registerValueSuggestionsRoute } from './value_suggestions_route';
-import { DataRequestHandlerContext } from '../types';
export function registerRoutes({ http }: CoreSetup, config$: Observable): void {
- const router = http.createRouter();
+ const router = http.createRouter();
registerValueSuggestionsRoute(router, config$);
}
diff --git a/src/plugins/data/server/autocomplete/value_suggestions_route.ts b/src/plugins/data/server/autocomplete/value_suggestions_route.ts
index 75a41d50ac7bc..9c526f16f9b77 100644
--- a/src/plugins/data/server/autocomplete/value_suggestions_route.ts
+++ b/src/plugins/data/server/autocomplete/value_suggestions_route.ts
@@ -13,12 +13,12 @@ import { IRouter, SharedGlobalConfig } from 'kibana/server';
import { Observable } from 'rxjs';
import { first } from 'rxjs/operators';
import type { estypes } from '@elastic/elasticsearch';
-import { IFieldType, ES_SEARCH_STRATEGY, IEsSearchRequest } from '../index';
+import { IFieldType } from '../index';
+import { findIndexPatternById, getFieldByName } from '../index_patterns';
import { getRequestAbortedSignal } from '../lib';
-import { DataRequestHandlerContext } from '../types';
export function registerValueSuggestionsRoute(
- router: IRouter,
+ router: IRouter,
config$: Observable
) {
router.post(
@@ -45,40 +45,24 @@ export function registerValueSuggestionsRoute(
const config = await config$.pipe(first()).toPromise();
const { field: fieldName, query, filters } = request.body;
const { index } = request.params;
+ const { client } = context.core.elasticsearch.legacy;
const signal = getRequestAbortedSignal(request.events.aborted$);
- if (!context.indexPatterns) {
- return response.badRequest();
- }
-
const autocompleteSearchOptions = {
timeout: `${config.kibana.autocompleteTimeout.asMilliseconds()}ms`,
terminate_after: config.kibana.autocompleteTerminateAfter.asMilliseconds(),
};
- const indexPatterns = await context.indexPatterns.find(index, 1);
- if (!indexPatterns || indexPatterns.length === 0) {
- return response.notFound();
- }
- const field = indexPatterns[0].getFieldByName(fieldName);
+ const indexPattern = await findIndexPatternById(context.core.savedObjects.client, index);
+
+ const field = indexPattern && getFieldByName(fieldName, indexPattern);
const body = await getBody(autocompleteSearchOptions, field || fieldName, query, filters);
- const searchRequest: IEsSearchRequest = {
- params: {
- index,
- body,
- },
- };
- const { rawResponse } = await context.search
- .search(searchRequest, {
- strategy: ES_SEARCH_STRATEGY,
- abortSignal: signal,
- })
- .toPromise();
+ const result = await client.callAsCurrentUser('search', { index, body }, { signal });
const buckets: any[] =
- get(rawResponse, 'aggregations.suggestions.buckets') ||
- get(rawResponse, 'aggregations.nestedSuggestions.suggestions.buckets');
+ get(result, 'aggregations.suggestions.buckets') ||
+ get(result, 'aggregations.nestedSuggestions.suggestions.buckets');
return response.ok({ body: map(buckets || [], 'key') });
}
diff --git a/src/plugins/data/server/index.ts b/src/plugins/data/server/index.ts
index c153c0efa8892..cbf09ef57d96a 100644
--- a/src/plugins/data/server/index.ts
+++ b/src/plugins/data/server/index.ts
@@ -236,10 +236,10 @@ export {
SearchUsage,
SearchSessionService,
ISearchSessionService,
+ SearchRequestHandlerContext,
+ DataRequestHandlerContext,
} from './search';
-export { DataRequestHandlerContext } from './types';
-
// Search namespace
export const search = {
aggs: {
diff --git a/src/plugins/data/server/index_patterns/index.ts b/src/plugins/data/server/index_patterns/index.ts
index 85610cd85a3ce..7226d6f015cf8 100644
--- a/src/plugins/data/server/index_patterns/index.ts
+++ b/src/plugins/data/server/index_patterns/index.ts
@@ -6,8 +6,6 @@
* Side Public License, v 1.
*/
-import { IndexPatternsService } from '../../common/index_patterns';
-
export * from './utils';
export {
IndexPatternsFetcher,
@@ -17,5 +15,3 @@ export {
getCapabilitiesForRollupIndices,
} from './fetcher';
export { IndexPatternsServiceProvider, IndexPatternsServiceStart } from './index_patterns_service';
-
-export type IndexPatternsHandlerContext = IndexPatternsService;
diff --git a/src/plugins/data/server/index_patterns/index_patterns_service.ts b/src/plugins/data/server/index_patterns/index_patterns_service.ts
index 8897b0d136047..232e130b6ea7b 100644
--- a/src/plugins/data/server/index_patterns/index_patterns_service.ts
+++ b/src/plugins/data/server/index_patterns/index_patterns_service.ts
@@ -27,7 +27,6 @@ import { getIndexPatternLoad } from './expressions';
import { UiSettingsServerToCommon } from './ui_settings_wrapper';
import { IndexPatternsApiServer } from './index_patterns_api_client';
import { SavedObjectsClientServerToCommon } from './saved_objects_client_wrapper';
-import { DataRequestHandlerContext } from '../types';
import { registerIndexPatternsUsageCollector } from './register_index_pattern_usage_collection';
export interface IndexPatternsServiceStart {
@@ -90,22 +89,6 @@ export class IndexPatternsServiceProvider implements Plugin(
- 'indexPatterns',
- async (context, request) => {
- const [coreStart, , dataStart] = await core.getStartServices();
- try {
- return await dataStart.indexPatterns.indexPatternsServiceFactory(
- coreStart.savedObjects.getScopedClient(request),
- coreStart.elasticsearch.client.asScoped(request).asCurrentUser
- );
- } catch (e) {
- logger.error(e);
- return undefined;
- }
- }
- );
-
registerRoutes(core.http, core.getStartServices);
expressions.registerFunction(getIndexPatternLoad({ getStartServices: core.getStartServices }));
diff --git a/src/plugins/data/server/mocks.ts b/src/plugins/data/server/mocks.ts
index c82db7a141403..786dd30dbabd0 100644
--- a/src/plugins/data/server/mocks.ts
+++ b/src/plugins/data/server/mocks.ts
@@ -13,7 +13,7 @@ import {
} from './search/mocks';
import { createFieldFormatsSetupMock, createFieldFormatsStartMock } from './field_formats/mocks';
import { createIndexPatternsStartMock } from './index_patterns/mocks';
-import { DataRequestHandlerContext } from './types';
+import { DataRequestHandlerContext } from './search';
function createSetupContract() {
return {
diff --git a/src/plugins/data/server/search/routes/msearch.ts b/src/plugins/data/server/search/routes/msearch.ts
index b5f06c4b343e7..b578805d8c2df 100644
--- a/src/plugins/data/server/search/routes/msearch.ts
+++ b/src/plugins/data/server/search/routes/msearch.ts
@@ -12,7 +12,7 @@ import { SearchRouteDependencies } from '../search_service';
import { getCallMsearch } from './call_msearch';
import { reportServerError } from '../../../../kibana_utils/server';
-import type { DataPluginRouter } from '../../types';
+import type { DataPluginRouter } from '../types';
/**
* The msearch route takes in an array of searches, each consisting of header
* and body json, and reformts them into a single request for the _msearch API.
diff --git a/src/plugins/data/server/search/routes/search.ts b/src/plugins/data/server/search/routes/search.ts
index 6690e2b81f3e4..1680a9c4a7237 100644
--- a/src/plugins/data/server/search/routes/search.ts
+++ b/src/plugins/data/server/search/routes/search.ts
@@ -10,7 +10,7 @@ import { first } from 'rxjs/operators';
import { schema } from '@kbn/config-schema';
import { getRequestAbortedSignal } from '../../lib';
import { reportServerError } from '../../../../kibana_utils/server';
-import type { DataPluginRouter } from '../../types';
+import type { DataPluginRouter } from '../types';
export function registerSearchRoute(router: DataPluginRouter): void {
router.post(
diff --git a/src/plugins/data/server/search/search_service.ts b/src/plugins/data/server/search/search_service.ts
index 9dc144d5e8f1f..e53244fa7ff26 100644
--- a/src/plugins/data/server/search/search_service.ts
+++ b/src/plugins/data/server/search/search_service.ts
@@ -29,6 +29,7 @@ import type {
ISearchStrategy,
SearchEnhancements,
SearchStrategyDependencies,
+ DataRequestHandlerContext,
} from './types';
import { AggsService } from './aggs';
@@ -74,7 +75,6 @@ import { ConfigSchema } from '../../config';
import { ISearchSessionService, SearchSessionService } from './session';
import { KbnServerError } from '../../../kibana_utils/server';
import { registerBsearchRoute } from './routes/bsearch';
-import { DataRequestHandlerContext } from '../types';
import { getKibanaContext } from './expressions/kibana_context';
type StrategyMap = Record>;
diff --git a/src/plugins/data/server/search/types.ts b/src/plugins/data/server/search/types.ts
index d7aadcc348c87..e8548257c0167 100644
--- a/src/plugins/data/server/search/types.ts
+++ b/src/plugins/data/server/search/types.ts
@@ -8,10 +8,12 @@
import { Observable } from 'rxjs';
import type {
+ IRouter,
IScopedClusterClient,
IUiSettingsClient,
SavedObjectsClientContract,
KibanaRequest,
+ RequestHandlerContext,
} from 'src/core/server';
import {
ISearchOptions,
@@ -114,3 +116,12 @@ export interface ISearchStart<
}
export type SearchRequestHandlerContext = IScopedSearchClient;
+
+/**
+ * @internal
+ */
+export interface DataRequestHandlerContext extends RequestHandlerContext {
+ search: SearchRequestHandlerContext;
+}
+
+export type DataPluginRouter = IRouter;
diff --git a/src/plugins/data/server/server.api.md b/src/plugins/data/server/server.api.md
index 023e0adbf97e2..d6025f6babcea 100644
--- a/src/plugins/data/server/server.api.md
+++ b/src/plugins/data/server/server.api.md
@@ -321,12 +321,6 @@ export const config: PluginConfigDescriptor;
// @internal (undocumented)
export interface DataRequestHandlerContext extends RequestHandlerContext {
- // Warning: (ae-forgotten-export) The symbol "IndexPatternsHandlerContext" needs to be exported by the entry point index.d.ts
- //
- // (undocumented)
- indexPatterns?: IndexPatternsHandlerContext;
- // Warning: (ae-forgotten-export) The symbol "SearchRequestHandlerContext" needs to be exported by the entry point index.d.ts
- //
// (undocumented)
search: SearchRequestHandlerContext;
}
@@ -1343,6 +1337,11 @@ export const search: {
tabifyGetColumns: typeof tabifyGetColumns;
};
+// Warning: (ae-missing-release-tag) "SearchRequestHandlerContext" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
+//
+// @public (undocumented)
+export type SearchRequestHandlerContext = IScopedSearchClient;
+
// @internal
export class SearchSessionService implements ISearchSessionService {
constructor();
@@ -1530,7 +1529,7 @@ export function usageProvider(core: CoreSetup_2): SearchUsage;
// src/plugins/data/server/index.ts:270:1 - (ae-forgotten-export) The symbol "toAbsoluteDates" needs to be exported by the entry point index.d.ts
// src/plugins/data/server/index.ts:271:1 - (ae-forgotten-export) The symbol "calcAutoIntervalLessThan" needs to be exported by the entry point index.d.ts
// src/plugins/data/server/plugin.ts:81:74 - (ae-forgotten-export) The symbol "DataEnhancements" needs to be exported by the entry point index.d.ts
-// src/plugins/data/server/search/types.ts:112:5 - (ae-forgotten-export) The symbol "ISearchStartSearchSource" needs to be exported by the entry point index.d.ts
+// src/plugins/data/server/search/types.ts:114:5 - (ae-forgotten-export) The symbol "ISearchStartSearchSource" needs to be exported by the entry point index.d.ts
// (No @packageDocumentation comment for this package)
diff --git a/src/plugins/data/server/types.ts b/src/plugins/data/server/types.ts
deleted file mode 100644
index ea0fa49058d37..0000000000000
--- a/src/plugins/data/server/types.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License
- * 2.0 and the Server Side Public License, v 1; you may not use this file except
- * in compliance with, at your election, the Elastic License 2.0 or the Server
- * Side Public License, v 1.
- */
-
-import type { IRouter, RequestHandlerContext } from 'src/core/server';
-
-import { SearchRequestHandlerContext } from './search';
-import { IndexPatternsHandlerContext } from './index_patterns';
-
-/**
- * @internal
- */
-export interface DataRequestHandlerContext extends RequestHandlerContext {
- search: SearchRequestHandlerContext;
- indexPatterns?: IndexPatternsHandlerContext;
-}
-
-export type DataPluginRouter = IRouter;
diff --git a/x-pack/plugins/infra/server/types.ts b/x-pack/plugins/infra/server/types.ts
index 1c51a5549cb41..5cae015861946 100644
--- a/x-pack/plugins/infra/server/types.ts
+++ b/x-pack/plugins/infra/server/types.ts
@@ -5,7 +5,8 @@
* 2.0.
*/
-import type { DataRequestHandlerContext } from '../../../../src/plugins/data/server';
+import type { RequestHandlerContext } from 'src/core/server';
+import type { SearchRequestHandlerContext } from '../../../../src/plugins/data/server';
import { MlPluginSetup } from '../../ml/server';
export type MlSystem = ReturnType;
@@ -26,6 +27,7 @@ export type InfraRequestHandlerContext = InfraMlRequestHandlerContext &
/**
* @internal
*/
-export interface InfraPluginRequestHandlerContext extends DataRequestHandlerContext {
+export interface InfraPluginRequestHandlerContext extends RequestHandlerContext {
infra: InfraRequestHandlerContext;
+ search: SearchRequestHandlerContext;
}