From 81fb249c8300acfeacac6efaa529b46e231886f8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Mantas=20Jonu=C5=A1as?= <mantas.jonusas@nfq.lt>
Date: Tue, 24 Mar 2015 09:09:26 +0200
Subject: [PATCH] Added percentile ranks aggregation

---
 Aggregation/PercentileRanksAggregation.php | 100 +++++++++++++++++++++
 1 file changed, 100 insertions(+)
 create mode 100644 Aggregation/PercentileRanksAggregation.php

diff --git a/Aggregation/PercentileRanksAggregation.php b/Aggregation/PercentileRanksAggregation.php
new file mode 100644
index 0000000..a69e137
--- /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;
+    }
+}
-- 
GitLab