diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/index.ts b/x-pack/plugins/security_solution/server/search_strategy/security_solution/index.ts index 0883a144615bc..c0c88bddbacbf 100644 --- a/x-pack/plugins/security_solution/server/search_strategy/security_solution/index.ts +++ b/x-pack/plugins/security_solution/server/search_strategy/security_solution/index.ts @@ -16,6 +16,7 @@ import { FactoryQueryTypes, StrategyResponseType, StrategyRequestType, + RequestBasicOptions, } from '../../../common/search_strategy/security_solution'; import { securitySolutionFactory } from './factory'; import { SecuritySolutionFactory } from './factory/types'; @@ -29,29 +30,31 @@ export const securitySolutionSearchStrategyProvider = { - if (request.factoryQueryType == null) { + const searchStrategyRequest = request as RequestBasicOptions; + if (searchStrategyRequest.factoryQueryType != null) { + const queryFactory: SecuritySolutionFactory = + securitySolutionFactory[searchStrategyRequest.factoryQueryType]; + const dsl = queryFactory.buildDsl(request); + return es.search({ ...request, params: dsl }, options, deps).pipe( + map((response) => { + return { + ...response, + ...{ + rawResponse: shimHitsTotal(response.rawResponse, options), + }, + }; + }), + mergeMap((esSearchRes) => + queryFactory.parse(request, esSearchRes, { + esClient: deps.esClient, + savedObjectsClient: deps.savedObjectsClient, + endpointContext, + }) + ) + ); + } else { throw new Error('factoryQueryType is required'); } - const queryFactory: SecuritySolutionFactory = - securitySolutionFactory[request.factoryQueryType]; - const dsl = queryFactory.buildDsl(request); - return es.search({ ...request, params: dsl }, options, deps).pipe( - map((response) => { - return { - ...response, - ...{ - rawResponse: shimHitsTotal(response.rawResponse, options), - }, - }; - }), - mergeMap((esSearchRes) => - queryFactory.parse(request, esSearchRes, { - esClient: deps.esClient, - savedObjectsClient: deps.savedObjectsClient, - endpointContext, - }) - ) - ); }, cancel: async (id, options, deps) => { if (es.cancel) {