Smile\ElasticsuiteCore\Search\Adapter\Elasticsuite\Request\Aggregation\Builder::buildAggregations PHP Method

buildAggregations() public method

Build ES aggregations from search request buckets.
public buildAggregations ( array $buckets = [] ) : array
$buckets array Bucket to be converted into ES aggregations
return array
    public function buildAggregations(array $buckets = [])
    {
        $aggregations = [];
        foreach ($buckets as $bucket) {
            $bucketType = $bucket->getType();
            $builder = $this->getBuilder($bucketType);
            $aggregation = $builder->buildBucket($bucket);
            if ($bucket->isNested()) {
                if ($bucket->getNestedFilter()) {
                    $aggregation = ['filter' => $this->queryBuilder->buildQuery($bucket->getNestedFilter()), 'aggregations' => [$bucket->getName() => $aggregation]];
                }
                $aggregation = ['nested' => ['path' => $bucket->getNestedPath()], 'aggregations' => [$bucket->getName() => $aggregation]];
            }
            if ($bucket->getFilter()) {
                $aggregation = ['filter' => $this->queryBuilder->buildQuery($bucket->getFilter()), 'aggregations' => [$bucket->getName() => $aggregation]];
            }
            $aggregations[$bucket->getName()] = $aggregation;
        }
        return $aggregations;
    }

Usage Example

Example #1
0
 /**
  * Extract and build aggregations of the search request.
  *
  * @param RequestInterface $request Search request.
  *
  * @return array
  */
 private function getAggregations(RequestInterface $request)
 {
     $aggregations = [];
     if ($request->getAggregation()) {
         $aggregations = $this->aggregationBuilder->buildAggregations($request->getAggregation());
     }
     return $aggregations;
 }