public function buildQuery(QueryInterface $query)
{
$searchQuery = [];
$clauses = [self::QUERY_CONDITION_MUST, self::QUERY_CONDITION_NOT, self::QUERY_CONDITION_SHOULD];
foreach ($clauses as $clause) {
$queries = array_map([$this->parentBuilder, 'buildQuery'], $this->getQueryClause($query, $clause));
$searchQuery[$clause] = array_filter($queries);
}
$searchQuery['minimum_should_match'] = $query->getMinimumShouldMatch();
$searchQuery['boost'] = $query->getBoost();
if ($query->isCached()) {
$searchQuery['_cache'] = true;
}
return ['bool' => $searchQuery];
}