Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Aggregation.php
Go to the documentation of this file.
1 <?php
7 
11 
17 {
24  private static $maxTermBacketSize = 500;
25 
30  protected $fieldMapper;
31 
35  public function __construct(
37  ) {
38  $this->fieldMapper = $fieldMapper;
39  }
40 
49  public function build(
51  array $searchQuery
52  ) {
53  $buckets = $request->getAggregation();
54  foreach ($buckets as $bucket) {
55  $searchQuery = $this->buildBucket($searchQuery, $bucket);
56  }
57  return $searchQuery;
58  }
59 
68  protected function buildBucket(
69  array $searchQuery,
70  BucketInterface $bucket
71  ) {
72  $field = $this->fieldMapper->getFieldName($bucket->getField());
73  switch ($bucket->getType()) {
74  case BucketInterface::TYPE_TERM:
75  $searchQuery['body']['aggregations'][$bucket->getName()]= [
76  'terms' => [
77  'field' => $field,
78  'size' => self::$maxTermBacketSize,
79  ],
80  ];
81  break;
82  case BucketInterface::TYPE_DYNAMIC:
83  $searchQuery['body']['aggregations'][$bucket->getName()]= [
84  'extended_stats' => [
85  'field' => $field,
86  ],
87  ];
88  break;
89  }
90  return $searchQuery;
91  }
92 }
build(RequestInterface $request, array $searchQuery)
Definition: Aggregation.php:49
buildBucket(array $searchQuery, BucketInterface $bucket)
Definition: Aggregation.php:68