diff --git a/src/Aggregation/Bucketing/CompositeAggregation.php b/src/Aggregation/Bucketing/CompositeAggregation.php
index d36c9007b805d9ef70bc4d67962258a3dad266c5..5489efc90eff8ca6d157d10bfc1ab963f75a7608 100644
--- a/src/Aggregation/Bucketing/CompositeAggregation.php
+++ b/src/Aggregation/Bucketing/CompositeAggregation.php
@@ -29,6 +29,16 @@ class CompositeAggregation extends AbstractAggregation
      */
     private $sources = [];
 
+    /**
+     * @var int
+     */
+    private $size;
+
+    /**
+     * @var array
+     */
+    private $after;
+
     /**
      * Inner aggregations container init.
      *
@@ -65,9 +75,19 @@ class CompositeAggregation extends AbstractAggregation
      */
     public function getArray()
     {
-        return [
+        $array = [
             'sources' => $this->sources,
         ];
+
+        if ($this->size !== null) {
+            $array['size'] = $this->size;
+        }
+
+        if (!empty($this->after)) {
+            $array['after'] = $this->after;
+        }
+
+        return $array;
     }
 
     /**
@@ -77,4 +97,48 @@ class CompositeAggregation extends AbstractAggregation
     {
         return 'composite';
     }
+
+    /**
+     * Sets size
+     *
+     * @param int $size Size
+     *
+     * @return void
+     */
+    public function setSize($size)
+    {
+        $this->size = $size;
+    }
+
+    /**
+     * Returns size
+     *
+     * @return int
+     */
+    public function getSize()
+    {
+        return $this->size;
+    }
+
+    /**
+     * Sets after
+     *
+     * @param array $after After
+     *
+     * @return void
+     */
+    public function setAfter(array $after)
+    {
+        $this->after = $after;
+    }
+
+    /**
+     * Returns after
+     *
+     * @return array
+     */
+    public function getAfter()
+    {
+        return $this->after;
+    }
 }
diff --git a/tests/Unit/Aggregation/Bucketing/CompositeAggregationTest.php b/tests/Unit/Aggregation/Bucketing/CompositeAggregationTest.php
index d10953206ec4b4070f4b4e60450eec1d6e89e72d..b3bd6253cc84f39409200cfd732ec90cd9ce64ee 100644
--- a/tests/Unit/Aggregation/Bucketing/CompositeAggregationTest.php
+++ b/tests/Unit/Aggregation/Bucketing/CompositeAggregationTest.php
@@ -38,6 +38,54 @@ class CompositeAggregationTest extends \PHPUnit\Framework\TestCase
         $this->assertEquals($expectedResult, $compositeAgg->toArray());
     }
 
+    /**
+     * Test for composite aggregation toArray() method with size and after part.
+     */
+    public function testToArrayWithSizeAndAfter()
+    {
+        $compositeAgg = new CompositeAggregation('composite_test_agg');
+        $termsAgg = new TermsAggregation('test_term_agg', 'test_field');
+        $compositeAgg->addSource($termsAgg);
+        $compositeAgg->setSize(5);
+        $compositeAgg->setAfter(['test_term_agg' => 'test']);
+
+        $expectedResult = [
+            'composite' => [
+                'sources' =>  [
+                    [
+                        'test_term_agg' => [ 'terms' => ['field' => 'test_field'] ],
+                    ]
+                ],
+                'size' => 5,
+                'after' => ['test_term_agg' => 'test']
+            ],
+        ];
+
+        $this->assertEquals($expectedResult, $compositeAgg->toArray());
+    }
+
+    /**
+     * Test for composite aggregation getSize() method.
+     */
+    public function testGetSize()
+    {
+        $compositeAgg = new CompositeAggregation('composite_test_agg');
+        $compositeAgg->setSize(5);
+
+        $this->assertEquals(5, $compositeAgg->getSize());
+    }
+
+    /**
+     * Test for composite aggregation getAfter() method.
+     */
+    public function testGetAfter()
+    {
+        $compositeAgg = new CompositeAggregation('composite_test_agg');
+        $compositeAgg->setAfter(['test_term_agg' => 'test']);
+
+        $this->assertEquals(['test_term_agg' => 'test'], $compositeAgg->getAfter());
+    }
+
     /**
      * Tests getType method.
      */