Ip Range Aggregation Usage

edit

Fluent DSL example

edit
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 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.

{
  "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.Aggregations.IpRange("ip_ranges");
ipRanges.Should().NotBeNull();
ipRanges.Buckets.Should().NotBeNull();
ipRanges.Buckets.Count.Should().BeGreaterThan(0);
foreach (var range in ipRanges.Buckets)
{
    if (TestConfiguration.Instance.InRange("6.4.0"))
        range.Key.Should().NotBeNullOrEmpty();

    range.DocCount.Should().BeGreaterThan(0);
}