diff --git a/Aggregation/ExtendedStatsAggregation.php b/Aggregation/ExtendedStatsAggregation.php new file mode 100644 index 0000000000000000000000000000000000000000..4307db4ddea6b617aaf3ea59f3bc82a9ca47adba --- /dev/null +++ b/Aggregation/ExtendedStatsAggregation.php @@ -0,0 +1,75 @@ +<?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 Extended stats aggregation. + */ +class ExtendedStatsAggregation extends AbstractAggregation +{ + use MetricTrait; + use ScriptAwareTrait; + + /** + * @var int + */ + private $sigma; + + /** + * @return int + */ + public function getSigma() + { + return $this->sigma; + } + + /** + * @param int $sigma + */ + public function setSigma($sigma) + { + $this->sigma = $sigma; + } + + /** + * {@inheritdoc} + */ + public function getType() + { + return 'extended_stats'; + } + + /** + * {@inheritdoc} + */ + public function getArray() + { + $out = []; + + if ($this->getField()) { + $out['field'] = $this->getField(); + } elseif ($this->getScript()) { + $out['script'] = $this->getScript(); + } else { + throw new \LogicException('Extended stats aggregation must have field or script set.'); + } + + if ($this->getSigma()) { + $out['sigma'] = $this->getSigma(); + } + + return $out; + } +}