diff --git a/Aggregation/CardinalityAggregation.php b/Aggregation/CardinalityAggregation.php
new file mode 100644
index 0000000000000000000000000000000000000000..070f77b3faf61d160acc95825c67a67b591c6d96
--- /dev/null
+++ b/Aggregation/CardinalityAggregation.php
@@ -0,0 +1,95 @@
+<?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;
+
+/**
+ * Difference values counter.
+ */
+class CardinalityAggregation extends AbstractAggregation
+{
+    use MetricTrait;
+
+    /**
+     * @var int
+     */
+    private $precisionThreshold;
+
+    /**
+     * @var bool
+     */
+    private $rehash;
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getArray()
+    {
+        if (!$this->getField()) {
+            return new \stdClass();
+        }
+
+        $out['field'] = $this->getField();
+        if ($this->getPrecisionThreshold()) {
+            $out['precision_threshold'] = $this->getPrecisionThreshold();
+        }
+
+        if ($this->isRehash() !== null) {
+            $out['rehash'] = $this->isRehash();
+        }
+
+        return $out;
+    }
+
+    /**
+     * Precision threshold.
+     *
+     * @param int $precision Precision Threshold.
+     */
+    public function setPrecisionThreshold($precision)
+    {
+        $this->precisionThreshold = $precision;
+    }
+
+    /**
+     * @return int
+     */
+    public function getPrecisionThreshold()
+    {
+        return $this->precisionThreshold;
+    }
+
+    /**
+     * @return bool
+     */
+    public function isRehash()
+    {
+        return $this->rehash;
+    }
+
+    /**
+     * @param bool $rehash
+     */
+    public function setRehash($rehash)
+    {
+        $this->rehash = $rehash;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getType()
+    {
+        return 'cardinality';
+    }
+}