Ipv4 Range Aggregation

More info about ipv4 range aggregation is in the official elasticsearch docs

Just like the dedicated date range aggregation, there is also a dedicated range aggregation for IPv4 typed fields.

Simple example

{
    "aggregations" : {
        "ip_range" : {
            "ip_range" : {
                "field" : "ip",
                "ranges" : [
                    { "to" : "10.0.0.5" },
                    { "from" : "10.0.0.5" }
                ]
            }
        }
    }
}

And now the query via DSL:

$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

$ipv4RangeAggregation = new Ipv4RangeAggregation(
    'ip_range',
    'ip',
    ['10.0.0.0/25']
);

$search = new Search();
$search->addAggregation($ipv4RangeAggregation);

$queryArray = $search->toArray();

Example using adders

$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();