diff --git a/docs/Aggregation/Filters.md b/docs/Aggregation/Filters.md
new file mode 100644
index 0000000000000000000000000000000000000000..8ec4451144eccebeaf46f0748e4aa6dad10c14a1
--- /dev/null
+++ b/docs/Aggregation/Filters.md
@@ -0,0 +1,86 @@
+# Filters Aggregation
+
+> More info about filters aggregation is in the [official elasticsearch docs][1]
+
+Defines a multi bucket aggregations where each bucket is associated with a filter.
+Each bucket will collect all documents that match its associated filter.
+
+Filters can have names or be anonymous, this is controlled by setAnonymous method.
+By default filters are not anonymous and trying to add filter without name will result
+in exception.
+
+## Named example
+
+```JSON
+{
+  "aggregations" : {
+    "agg_messages" : {
+      "filters" : {
+        "filters" : {
+          "errors" :   { "term" : { "body" : "error"   }},
+          "warnings" : { "term" : { "body" : "warning" }}
+        }
+      },
+      "aggregations" : {
+        "agg_monthly" : {
+          "histogram" : {
+            "field" : "timestamp",
+            "interval" : "1M"
+          }
+        }
+      }
+    }
+  }
+}
+```
+
+And now the query via DSL:
+
+```php
+$errorTermFilter = new TermFilter('body', 'error');
+$warningTermFilter = new TermFilter('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);
+
+$queryArray = $search->toArray();
+```
+
+## Anonymous example
+
+```php
+$errorTermFilter = new TermFilter('body', 'error');
+$warningTermFilter = new TermFilter('body', 'warning');
+
+$histogramAggregation = new HistogramAggregation('monthly', 'timestamp');
+$histogramAggregation->setInterval('1M');
+
+$filterAggregation = new FiltersAggregation(
+    'grades_stats',
+    [
+        $errorTermFilter,
+        $warningTermFilter,
+    ],
+    true
+);
+$filterAggregation->addAggregation($histogramAggregation);
+
+$search = new Search();
+$search->addAggregation($filterAggregation);
+
+$queryArray = $search->toArray();
+```
+
+[1]: https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-filters-aggregation.html
\ No newline at end of file