66 $searchQuery = $this->queryBuilder->initQuery(
$request);
67 $searchQuery[
'body'][
'query'] = array_merge(
68 $searchQuery[
'body'][
'query'],
72 BoolQuery::QUERY_CONDITION_MUST
76 if (isset($searchQuery[
'body'][
'query'][
'bool'][
'should'])) {
77 $searchQuery[
'body'][
'query'][
'bool'][
'minimum_should_match'] = 1;
80 $searchQuery = $this->queryBuilder->initAggregations(
$request, $searchQuery);
94 protected function processQuery(
95 RequestQueryInterface $requestQuery,
99 switch ($requestQuery->getType()) {
100 case RequestQueryInterface::TYPE_MATCH:
102 $selectQuery = $this->matchQueryBuilder->build(
108 case RequestQueryInterface::TYPE_BOOL:
112 case RequestQueryInterface::TYPE_FILTER:
114 $selectQuery = $this->processFilterQuery($requestQuery, $selectQuery, $conditionType);
117 throw new \InvalidArgumentException(sprintf(
'Unknown query type \'%s\'', $requestQuery->getType()));
138 BoolQuery::QUERY_CONDITION_MUST
144 BoolQuery::QUERY_CONDITION_SHOULD
148 $query->getMustNot(),
150 BoolQuery::QUERY_CONDITION_NOT
170 foreach ($subQueryList as $subQuery) {
171 $selectQuery = $this->processQuery($subQuery, $selectQuery, $conditionType);
185 private function processFilterQuery(
190 switch (
$query->getReferenceType()) {
191 case FilterQuery::REFERENCE_QUERY:
192 $selectQuery = $this->processQuery(
$query->getReference(), $selectQuery, $conditionType);
194 case FilterQuery::REFERENCE_FILTER:
195 $conditionType = $conditionType === BoolQuery::QUERY_CONDITION_NOT ?
196 MatchQueryBuilder::QUERY_CONDITION_MUST_NOT : $conditionType;
197 $filterQuery = $this->filterBuilder->build(
$query->getReference(), $conditionType);
198 foreach ($filterQuery[
'bool'] as $condition => $filter) {
199 $selectQuery[
'bool'][$condition]= array_merge(
200 isset($selectQuery[
'bool'][$condition]) ? $selectQuery[
'bool'][$condition] : [],
processBoolQueryCondition(array $subQueryList, array $selectQuery, $conditionType)
processBoolQuery(BoolQuery $query, array $selectQuery)
buildQuery(RequestInterface $request)
__construct(QueryBuilder $queryBuilder, MatchQueryBuilder $matchQueryBuilder, FilterBuilder $filterBuilder)