| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 | [[java-aggs-bucket-iprange]]==== Ip Range AggregationHere is how you can use{ref}/search-aggregations-bucket-iprange-aggregation.html[Ip Range Aggregation]with Java API.===== Prepare aggregation requestHere is an example on how to create the aggregation request:[source,java]--------------------------------------------------AggregationBuilder aggregation =        AggregationBuilders                .ipRange("agg")                .field("ip")                .addUnboundedTo("192.168.1.0")             // from -infinity to 192.168.1.0 (excluded)                .addRange("192.168.1.0", "192.168.2.0")    // from 192.168.1.0 to 192.168.2.0 (excluded)                .addUnboundedFrom("192.168.2.0");          // from 192.168.2.0 to +infinity--------------------------------------------------Note that you could also use ip masks as ranges:[source,java]--------------------------------------------------AggregationBuilder aggregation =        AggregationBuilders                .ipRange("agg")                .field("ip")                .addMaskRange("192.168.0.0/32")                .addMaskRange("192.168.0.0/24")                .addMaskRange("192.168.0.0/16");--------------------------------------------------===== Use aggregation responseImport Aggregation definition classes:[source,java]--------------------------------------------------import org.elasticsearch.search.aggregations.bucket.range.Range;--------------------------------------------------[source,java]--------------------------------------------------// sr is here your SearchResponse objectRange agg = sr.getAggregations().get("agg");// For each entryfor (Range.Bucket entry : agg.getBuckets()) {    String key = entry.getKeyAsString();            // Ip range as key    String fromAsString = entry.getFromAsString();  // Ip bucket from as a String    String toAsString = entry.getToAsString();      // Ip bucket to as a String    long docCount = entry.getDocCount();            // Doc count    logger.info("key [{}], from [{}], to [{}], doc_count [{}]", key, fromAsString, toAsString, docCount);}--------------------------------------------------This will basically produce for the first example:[source,text]--------------------------------------------------key [*-192.168.1.0], from [null], to [192.168.1.0], doc_count [13]key [192.168.1.0-192.168.2.0], from [192.168.1.0], to [192.168.2.0], doc_count [14]key [192.168.2.0-*], from [192.168.2.0], to [null], doc_count [23]--------------------------------------------------And for the second one (using Ip masks):[source,text]--------------------------------------------------key [192.168.0.0/32], from [192.168.0.0], to [192.168.0.1], doc_count [0]key [192.168.0.0/24], from [192.168.0.0], to [192.168.1.0], doc_count [13]key [192.168.0.0/16], from [192.168.0.0], to [192.169.0.0], doc_count [50]--------------------------------------------------
 |