diff --git a/src/Aggregation/DateRangeAggregation.php b/src/Aggregation/DateRangeAggregation.php
index b70da8f94ed621464a8b6c6d15d3b3409a967b95..fb8f7e375b7cae8b56fb91863e850e5342f8aa97 100644
--- a/src/Aggregation/DateRangeAggregation.php
+++ b/src/Aggregation/DateRangeAggregation.php
@@ -41,8 +41,9 @@ class DateRangeAggregation extends AbstractAggregation
      */
     public function __construct($name, $field = null, $format = null, array $ranges = [])
     {
-        parent::__construct($name, $field);
+        parent::__construct($name);
 
+        $this->setField($field);
         $this->setFormat($format);
         foreach ($ranges as $range) {
             $from = isset($range['from']) ? $range['from'] : null;
diff --git a/tests/Aggregation/DateRangeAggregationTest.php b/tests/Aggregation/DateRangeAggregationTest.php
index 45ec22675d39a8eba2f574f4a82002a849b16b8b..e9050240650d76e9f989b6196186ff2b6a02c04c 100644
--- a/tests/Aggregation/DateRangeAggregationTest.php
+++ b/tests/Aggregation/DateRangeAggregationTest.php
@@ -66,4 +66,74 @@ class DateRangeAggregationTest extends \PHPUnit_Framework_TestCase
         $result = $aggregation->getType();
         $this->assertEquals('date_range', $result);
     }
+
+    /**
+     * Data provider for testDateRangeAggregationConstructor.
+     *
+     * @return array
+     */
+    public function testDateRangeAggregationConstructorProvider()
+    {
+        return [
+            // Case #0. Minimum arguments.
+            [],
+            // Case #1. Provide field.
+            ['field' => 'fieldName'],
+            // Case #2. Provide format.
+            ['field' => 'fieldName', 'format' => 'formatString'],
+            // Case #3. Provide empty ranges.
+            ['field' => 'fieldName', 'format' => 'formatString', 'ranges' => []],
+            // Case #4. Provide 1 range.
+            [
+                'field' => 'fieldName',
+                'format' => 'formatString',
+                'ranges' => [['from' => 'value']],
+            ],
+            // Case #4. Provide 2 ranges.
+            [
+                'field' => 'fieldName',
+                'format' => 'formatString',
+                'ranges' => [['from' => 'value'], ['to' => 'value']],
+            ],
+            // Case #5. Provide 3 ranges.
+            [
+                'field' => 'fieldName',
+                'format' => 'formatString',
+                'ranges' => [['from' => 'value'], ['to' => 'value'], ['from' => 'value', 'to' => 'value2']],
+            ],
+        ];
+    }
+
+    /**
+     * Tests constructor method.
+     *
+     * @param string $field
+     * @param string $format
+     * @param array  $ranges
+     *
+     * @dataProvider testDateRangeAggregationConstructorProvider
+     */
+    public function testDateRangeAggregationConstructor($field = null, $format = null, array $ranges = null)
+    {
+        /** @var DateRangeAggregation|\PHPUnit_Framework_MockObject_MockObject $aggregation */
+        $aggregation = $this->getMockBuilder('ONGR\ElasticsearchDSL\Aggregation\DateRangeAggregation')
+            ->disableOriginalConstructor()->getMock();
+        $aggregation->expects($this->once())->method('setField')->with($field);
+        $aggregation->expects($this->once())->method('setFormat')->with($format);
+        $aggregation->expects($this->exactly(count($ranges)))->method('addRange');
+
+        if ($field !== null) {
+            if ($format !== null) {
+                if ($ranges !== null) {
+                    $aggregation->__construct('mock', $field, $format, $ranges);
+                } else {
+                    $aggregation->__construct('mock', $field, $format);
+                }
+            } else {
+                $aggregation->__construct('mock', $field);
+            }
+        } else {
+            $aggregation->__construct('mock');
+        }
+    }
 }