diff --git a/docs/Aggregation/Ipv4Range.md b/docs/Aggregation/Ipv4Range.md
new file mode 100644
index 0000000000000000000000000000000000000000..215d91c7e5189e1d9cfbd0b942ba2c7ded4e9e0b
--- /dev/null
+++ b/docs/Aggregation/Ipv4Range.md
@@ -0,0 +1,74 @@
+# Ipv4 Range Aggregation
+
+> More info about ipv4 range aggregation is in the [official elasticsearch docs][1]
+
+Just like the dedicated date range aggregation, there is also a dedicated
+range aggregation for IPv4 typed fields.
+
+## Simple example
+
+```JSON
+{
+    "aggregations" : {
+        "agg_ip_range" : {
+            "ip_range" : {
+                "field" : "ip",
+                "ranges" : [
+                    { "to" : "10.0.0.5" },
+                    { "from" : "10.0.0.5" }
+                ]
+            }
+        }
+    }
+}
+```
+
+And now the query via DSL:
+
+```php
+$ipv4RangeAggregation = new Ipv4RangeAggregation(
+    'ip_range',
+    'ip',
+    [
+        ['to' => '10.0.0.5'],
+        ['from' => '10.0.0.5'],
+    ]
+);
+
+$search = new Search();
+$search->addAggregation($ipv4RangeAggregation);
+
+$queryArray = $search->toArray();
+```
+
+## Example using masks
+
+```php
+$ipv4RangeAggregation = new Ipv4RangeAggregation(
+    'ip_range',
+    'ip',
+    ['10.0.0.0/25']
+);
+
+$search = new Search();
+$search->addAggregation($ipv4RangeAggregation);
+
+$queryArray = $search->toArray();
+```
+
+## Example using adders
+
+```php
+$ipv4RangeAggregation = new Ipv4RangeAggregation('ip_range', 'ip');
+$ipv4RangeAggregation->addMask('10.0.0.0/25');
+$ipv4RangeAggregation->addRange(null, '10.0.0.5');
+$ipv4RangeAggregation->addRange('10.0.0.5');
+$ipv4RangeAggregation->addRange('10.0.0.0', '10.0.0.127');
+
+$search = new Search();
+$search->addAggregation($ipv4RangeAggregation);
+
+$queryArray = $search->toArray();
+```
+
+[1]: https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-iprange-aggregation.html