Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<?php
declare(strict_types=1);
namespace IQDEV\ElasticSearch\Converter\Request\Aggregation;
use IQDEV\ElasticSearch\Configuration;
use IQDEV\ElasticSearch\Criteria;
use IQDEV\ElasticSearch\Request\Filter\Collection\FilterGroupCollection;
use IQDEV\ElasticSearch\Request\Filter\Filter;
use IQDEV\ElasticSearch\Request\Filter\FilterType;
use IQDEV\ElasticSearch\Search\Aggs\AggsCollection;
use IQDEV\ElasticSearch\Search\Aggs\AggsFacetStats;
use IQDEV\ElasticSearch\Search\Aggs\AggsFacetTerms;
class Aggregation
{
public function __construct(
private readonly Configuration $configuration,
private readonly Criteria $criteria,
private readonly AggsCollection $aggregations = new AggsCollection(),
) {
$this->convertToQuery();
}
public function convertToQuery(): void
{
$this->aggregations->add(
AggsFacetTerms::create(
'keyword_facet',
'keyword_facet'
)
);
$this->aggregations->add(
AggsFacetStats::create(
'number_facet',
'number_facet'
)
);
$postFilterCollection = $this->criteria->getFilters()->getFilterCollectionByType(FilterType::POST);
// foreach ($postFilterCollection as $filterGroup) {
// /** @var FilterGroupCollection $filterGroup */
//
// foreach ($filterGroup as $filter) {
// /** @var Filter $filter */
//
// $filterAggregation = new FilterAggregation($this->configuration, $filter, $postFilterCollection);
//
// if ($aggregation = $filterAggregation->getFilterAggregation()) {
// $this->aggregations->add($aggregation);
// }
// }
// }
$fullAggregation = new FullAggregation($this->configuration, $postFilterCollection);
$this->aggregations->add($fullAggregation->getKeywordAggregation());
$this->aggregations->add($fullAggregation->getRangeAggregation());
}
public function getAggregation(): AggsCollection
{
return $this->aggregations;
}
}