diff --git a/src/Aggregation/FiltersAggregation.php b/src/Aggregation/FiltersAggregation.php
index 51e8ba623e8ae6ae42e04a038ae4367fa8162832..af8aa1aae7f81a27c2dcc4b1818498b212d2bf22 100644
--- a/src/Aggregation/FiltersAggregation.php
+++ b/src/Aggregation/FiltersAggregation.php
@@ -77,9 +77,9 @@ class FiltersAggregation extends AbstractAggregation
         if ($this->anonymous === false && empty($name)) {
             throw new \LogicException('In not anonymous filters filter name must be set.');
         } elseif ($this->anonymous === false && !empty($name)) {
-            $this->filters['filters'][$name] = [$filter->getType() => $filter->toArray()];
+            $this->filters['filters'][$name] = $filter->toArray();
         } else {
-            $this->filters['filters'][] = [$filter->getType() => $filter->toArray()];
+            $this->filters['filters'][] = $filter->toArray();
         }
 
         return $this;
diff --git a/tests/Aggregation/FiltersAggregationTest.php b/tests/Aggregation/FiltersAggregationTest.php
index 379f3da100f33088cdc231c02106b76d34e6d3aa..cb05d9222a1dd7f594e3dc868734fb4fec4aed97 100644
--- a/tests/Aggregation/FiltersAggregationTest.php
+++ b/tests/Aggregation/FiltersAggregationTest.php
@@ -11,7 +11,6 @@
 
 namespace ONGR\ElasticsearchDSL\Tests\Aggregation;
 
-use ONGR\ElasticsearchDSL\Aggregation\AbstractAggregation;
 use ONGR\ElasticsearchDSL\Aggregation\FiltersAggregation;
 use ONGR\ElasticsearchDSL\BuilderInterface;
 
@@ -65,9 +64,6 @@ class FiltersAggregationTest extends \PHPUnit_Framework_TestCase
         $filter = $this->getMockBuilder('ONGR\ElasticsearchDSL\BuilderInterface')
             ->setMethods(['toArray', 'getType'])
             ->getMockForAbstractClass();
-        $filter->expects($this->any())
-            ->method('getType')
-            ->willReturn('test_filter');
         $filter->expects($this->any())
             ->method('toArray')
             ->willReturn(['test_field' => ['test_value' => 'test']]);
@@ -79,17 +75,13 @@ class FiltersAggregationTest extends \PHPUnit_Framework_TestCase
             'filters' => [
                 'filters' => [
                     'first' => [
-                        'test_filter' => [
-                            'test_field' => [
-                                'test_value' => 'test',
-                            ],
+                        'test_field' => [
+                            'test_value' => 'test',
                         ],
                     ],
                     'second' => [
-                        'test_filter' => [
-                            'test_field' => [
-                                'test_value' => 'test',
-                            ],
+                        'test_field' => [
+                            'test_value' => 'test',
                         ],
                     ],
                 ],
@@ -105,10 +97,8 @@ class FiltersAggregationTest extends \PHPUnit_Framework_TestCase
     {
         /** @var BuilderInterface|\PHPUnit_Framework_MockObject_MockObject $builderInterface1 */
         $builderInterface1 = $this->getMockForAbstractClass('ONGR\ElasticsearchDSL\BuilderInterface');
-        $builderInterface1->expects($this->any())->method('getType')->willReturn('type1');
         /** @var BuilderInterface|\PHPUnit_Framework_MockObject_MockObject $builderInterface2 */
         $builderInterface2 = $this->getMockForAbstractClass('ONGR\ElasticsearchDSL\BuilderInterface');
-        $builderInterface2->expects($this->any())->method('getType')->willReturn('type2');
 
         $aggregation = new FiltersAggregation(
             'test',
@@ -122,8 +112,8 @@ class FiltersAggregationTest extends \PHPUnit_Framework_TestCase
             [
                 'filters' => [
                     'filters' => [
-                        'filter1' => ['type1' => null],
-                        'filter2' => ['type2' => null],
+                        'filter1' => null,
+                        'filter2' => null,
                     ],
                 ],
             ],
@@ -143,8 +133,8 @@ class FiltersAggregationTest extends \PHPUnit_Framework_TestCase
             [
                 'filters' => [
                     'filters' => [
-                        ['type1' => null],
-                        ['type2' => null],
+                        null,
+                        null,
                     ],
                 ],
             ],
diff --git a/tests/Integration/SearchTest.php b/tests/Integration/SearchTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..9573f57b3b1e6382a5f4918cd73189e87dccd812
--- /dev/null
+++ b/tests/Integration/SearchTest.php
@@ -0,0 +1,141 @@
+<?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\Tests\Aggregation\Integration;
+
+use ONGR\ElasticsearchDSL\Aggregation\FiltersAggregation;
+use ONGR\ElasticsearchDSL\Aggregation\HistogramAggregation;
+use ONGR\ElasticsearchDSL\Query\TermQuery;
+use ONGR\ElasticsearchDSL\Search;
+use PHPUnit_Framework_TestCase;
+
+/**
+ * Tests integration of examples from the documentation.
+ */
+class SearchTest extends PHPUnit_Framework_TestCase
+{
+    /**
+     * Tests integration of the FiltersAggregation named example from the documentation.
+     *
+     * @link https://github.com/ongr-io/ElasticsearchDSL/blob/master/docs/Aggregation/Filters.md#named-example
+     */
+    public function testFiltersAggregationNamedExample()
+    {
+        $errorTermFilter = new TermQuery('body', 'error');
+        $warningTermFilter = new TermQuery('body', 'warning');
+
+        $histogramAggregation = new HistogramAggregation('monthly', 'timestamp');
+        $histogramAggregation->setInterval('1M');
+
+        $filterAggregation = new FiltersAggregation(
+            'grades_stats',
+            [
+                'error' => $errorTermFilter,
+                'warning' => $warningTermFilter,
+            ]
+        );
+        $filterAggregation->addAggregation($histogramAggregation);
+
+        $search = new Search();
+        $search->addAggregation($filterAggregation);
+
+        $this->assertSame(
+            [
+                'aggregations' => [
+                    'grades_stats' => [
+                        'filters' => [
+                            'filters' => [
+                                'error' => [
+                                    'term' => [
+                                        'body' => 'error',
+                                    ],
+                                ],
+                                'warning' => [
+                                    'term' => [
+                                        'body' => 'warning',
+                                    ],
+                                ],
+                            ],
+                        ],
+                        'aggregations' => [
+                            'monthly' => [
+                                'histogram' => [
+                                    'field' => 'timestamp',
+                                    'interval' => '1M',
+                                ],
+                            ],
+                        ],
+                    ],
+                ],
+            ],
+            $search->toArray()
+        );
+    }
+
+    /**
+     * Tests integration of the FiltersAggregation anonymous example from the documentation.
+     *
+     * @link https://github.com/ongr-io/ElasticsearchDSL/blob/master/docs/Aggregation/Filters.md#anonymous-example
+     */
+    public function testFiltersAggregationAnonymousExample()
+    {
+        $errorTermFilter = new TermQuery('body', 'error');
+        $warningTermFilter = new TermQuery('body', 'warning');
+
+        $histogramAggregation = new HistogramAggregation('monthly', 'timestamp');
+        $histogramAggregation->setInterval('1M');
+
+        $filterAggregation = new FiltersAggregation(
+            'grades_stats',
+            [
+                'error' => $errorTermFilter,
+                'warning' => $warningTermFilter,
+            ],
+            true
+        );
+        $filterAggregation->addAggregation($histogramAggregation);
+
+        $search = new Search();
+        $search->addAggregation($filterAggregation);
+
+        $this->assertSame(
+            [
+                'aggregations' => [
+                    'grades_stats' => [
+                        'filters' => [
+                            'filters' => [
+                                [
+                                    'term' => [
+                                        'body' => 'error',
+                                    ],
+                                ],
+                                [
+                                    'term' => [
+                                        'body' => 'warning',
+                                    ],
+                                ],
+                            ],
+                        ],
+                        'aggregations' => [
+                            'monthly' => [
+                                'histogram' => [
+                                    'field' => 'timestamp',
+                                    'interval' => '1M',
+                                ],
+                            ],
+                        ],
+                    ],
+                ],
+            ],
+            $search->toArray()
+        );
+    }
+}