Ip Range Aggregation Usage

edit

Fluent DSL example

edit
s => s
.Aggregations(a => a.IpRange("ip_ranges", ip => ip
    .Field(p => p.LeadDeveloper.IPAddress)
    .Ranges(
        r => r.To("127.0.0.1"),
        r => r.From("127.0.0.1")
    )
))

Object Initializer syntax example

edit
new SearchRequest<Project>
{
    Aggregations = new IpRangeAggregation("ip_ranges")
    {
        Field = Field((Project p) => p.LeadDeveloper.IPAddress),
        Ranges = new List<Nest.IpRange>
        {
            new Nest.IpRange { To = "127.0.0.1" },
            new Nest.IpRange { From = "127.0.0.1" }
        }
    }
}

Example json output.

{
  "aggs": {
    "ip_ranges": {
      "ip_range": {
        "field": "leadDeveloper.iPAddress",
        "ranges": [
          {
            "to": "127.0.0.1"
          },
          {
            "from": "127.0.0.1"
          }
        ]
      }
    }
  }
}

Handling Responses

edit
response.ShouldBeValid();
var ipRanges = response.Aggs.IpRange("ip_ranges");
ipRanges.Should().NotBeNull();
ipRanges.Buckets.Should().NotBeNull();
ipRanges.Buckets.Count.Should().BeGreaterThan(0);
foreach (var range in ipRanges.Buckets)
    range.DocCount.Should().BeGreaterThan(0);