/**
* Calls a finder method directly and applies it to the passed query,
* if no query is passed a new one will be created and returned
*
* @param string $type name of the finder to be called
* @param \Cake\ElasticSearch\Query $query The query object to apply the finder options to
* @param array $options List of options to pass to the finder
* @return \Cake\ElasticSearch\Query
* @throws \BadMethodCallException
*/
public function callFinder($type, Query $query, $options = [])
{
$query->applyOptions($options);
$options = $query->getOptions();
$finder = 'find' . ucfirst($type);
if (method_exists($this, $finder)) {
return $this->{$finder}($query, $options);
}
throw new \BadMethodCallException(sprintf('Unknown finder method "%s"', $type));
}