diff --git a/src/plugins/elasticsearch/lib/call_with_request.js b/src/plugins/elasticsearch/lib/call_with_request.js index 1bd818296c736..cf440b260219a 100644 --- a/src/plugins/elasticsearch/lib/call_with_request.js +++ b/src/plugins/elasticsearch/lib/call_with_request.js @@ -2,15 +2,21 @@ const _ = require('lodash'); const Promise = require('bluebird'); const Boom = require('boom'); const getBasicAuthRealm = require('./get_basic_auth_realm'); +const toPath = require('lodash/internal/toPath'); module.exports = (client) => { return (req, endpoint, params = {}) => { if (req.headers.authorization) { _.set(params, 'headers.authorization', req.headers.authorization); } - const api = _.get(client, endpoint); + const path = toPath(endpoint); + const api = _.get(client, path); + let apiContext = _.get(client, path.slice(0, -1)); + if (_.isEmpty(apiContext)) { + apiContext = client; + } if (!api) throw new Error(`callWithRequest called with an invalid endpoint: ${endpoint}`); - return api.call(client, params) + return api.call(apiContext, params) .catch((err) => { if (err.status === 401) { // TODO: The err.message is temporary until we have support for getting headers in the client.