From 9c45a50a86f34d8265cf7260b60cabd39e8ba37d Mon Sep 17 00:00:00 2001 From: Mantas <marc.mantas@gmail.com> Date: Tue, 12 Jul 2016 15:21:09 +0300 Subject: [PATCH] added sampler aggregation --- src/Aggregation/SamplerAggregation.php | 87 ++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 src/Aggregation/SamplerAggregation.php diff --git a/src/Aggregation/SamplerAggregation.php b/src/Aggregation/SamplerAggregation.php new file mode 100644 index 0000000..64fd182 --- /dev/null +++ b/src/Aggregation/SamplerAggregation.php @@ -0,0 +1,87 @@ +<?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\ElasticsearchDSL\Aggregation; + +use ONGR\ElasticsearchDSL\Aggregation\Type\BucketingTrait; + +/** + * Class representing geo bounds aggregation. + * + * @link https://www.elastic.co/guide/en/elasticsearch/reference/2.3/search-aggregations-bucket-sampler-aggregation.html + */ +class SamplerAggregation extends AbstractAggregation +{ + use BucketingTrait; + + /** + * Defines how many results will be received from each shard + * @param string $shardSize + */ + private $shardSize; + + /** + * Inner aggregations container init. + * + * @param string $name + * @param string $field + * @param int $shardSize + */ + public function __construct( + $name, + $field = null, + $shardSize = null + ) { + parent::__construct($name); + + $this->setField($field); + $this->setShardSize($shardSize); + } + + /** + * @return int + */ + public function getShardSize() + { + return $this->shardSize; + } + + /** + * @param int $shardSize + */ + public function setShardSize($shardSize) + { + $this->shardSize = $shardSize; + } + + /** + * {@inheritdoc} + */ + public function getType() + { + return 'sampler'; + } + + /** + * {@inheritdoc} + */ + public function getArray() + { + $out = array_filter( + [ + 'field' => $this->getField(), + 'shard_size' => $this->getShardSize(), + ] + ); + + return $out; + } +} -- GitLab