diff --git a/Aggregation/PercentileRanksAggregation.php b/Aggregation/PercentileRanksAggregation.php new file mode 100644 index 0000000000000000000000000000000000000000..a69e1374c7aff666f21e73ed91d83972135f743e --- /dev/null +++ b/Aggregation/PercentileRanksAggregation.php @@ -0,0 +1,100 @@ +<?php + +/* + * This file is part of the ONGR package. + * + * (c) NFQ Technologies UAB <info@nfq.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace ONGR\ElasticsearchBundle\DSL\Aggregation; + +use ONGR\ElasticsearchBundle\DSL\Aggregation\Type\MetricTrait; +use ONGR\ElasticsearchBundle\DSL\ScriptAwareTrait; + +/** + * Class representing Percentile Ranks Aggregation. + */ +class PercentileRanksAggregation extends AbstractAggregation +{ + use MetricTrait; + use ScriptAwareTrait; + + /** + * @var array + */ + private $values; + + /** + * @var int + */ + private $compression; + + /** + * @return array + */ + public function getValues() + { + return $this->values; + } + + /** + * @param array $values + */ + public function setValues($values) + { + $this->values = $values; + } + + /** + * @return int + */ + public function getCompression() + { + return $this->compression; + } + + /** + * @param int $compression + */ + public function setCompression($compression) + { + $this->compression = $compression; + } + + /** + * {@inheritdoc} + */ + public function getType() + { + return 'percentile_ranks'; + } + + /** + * {@inheritdoc} + */ + public function getArray() + { + $out = []; + + if ($this->getField() && $this->getValues()) { + $out['field'] = $this->getField(); + $out['values'] = $this->getValues(); + } elseif ($this->getScript() && $this->getValues()) { + $out['script'] = $this->getScript(); + $out['values'] = $this->getValues(); + } else { + throw new \LogicException( + 'Percentile ranks aggregation must have field and values or script and values set.' + ); + } + + if ($this->getCompression()) { + $out['compression'] = $this->getCompression(); + } + + return $out; + } +}