Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.

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" : {
        "agg_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();