Example usage for org.apache.lucene.document InetAddressPoint newRangeQuery

List of usage examples for org.apache.lucene.document InetAddressPoint newRangeQuery

Introduction

In this page you can find the example usage for org.apache.lucene.document InetAddressPoint newRangeQuery.

Prototype

public static Query newRangeQuery(String field, InetAddress lowerValue, InetAddress upperValue) 

Source Link

Document

Create a range query for network addresses.

Usage

From source file:org.elasticsearch.index.mapper.ip.IpFieldTypeTests.java

License:Apache License

public void testRangeQuery() {
    MappedFieldType ft = createDefaultFieldType();
    ft.setName("field");

    assertEquals(// ww w . j  av a  2 s .  c o m
            InetAddressPoint.newRangeQuery("field", InetAddresses.forString("::"), XInetAddressPoint.MAX_VALUE),
            ft.rangeQuery(null, null, randomBoolean(), randomBoolean()));

    assertEquals(
            InetAddressPoint.newRangeQuery("field", InetAddresses.forString("::"),
                    InetAddresses.forString("192.168.2.0")),
            ft.rangeQuery(null, "192.168.2.0", randomBoolean(), true));

    assertEquals(
            InetAddressPoint.newRangeQuery("field", InetAddresses.forString("::"),
                    InetAddresses.forString("192.168.1.255")),
            ft.rangeQuery(null, "192.168.2.0", randomBoolean(), false));

    assertEquals(InetAddressPoint.newRangeQuery("field", InetAddresses.forString("2001:db8::"),
            XInetAddressPoint.MAX_VALUE), ft.rangeQuery("2001:db8::", null, true, randomBoolean()));

    assertEquals(InetAddressPoint.newRangeQuery("field", InetAddresses.forString("2001:db8::1"),
            XInetAddressPoint.MAX_VALUE), ft.rangeQuery("2001:db8::", null, false, randomBoolean()));

    assertEquals(
            InetAddressPoint.newRangeQuery("field", InetAddresses.forString("2001:db8::"),
                    InetAddresses.forString("2001:db8::ffff")),
            ft.rangeQuery("2001:db8::", "2001:db8::ffff", true, true));

    assertEquals(
            InetAddressPoint.newRangeQuery("field", InetAddresses.forString("2001:db8::1"),
                    InetAddresses.forString("2001:db8::fffe")),
            ft.rangeQuery("2001:db8::", "2001:db8::ffff", false, false));

    assertEquals(
            InetAddressPoint.newRangeQuery("field", InetAddresses.forString("2001:db8::2"),
                    InetAddresses.forString("2001:db8::")),
            // same lo/hi values but inclusive=false so this won't match anything
            ft.rangeQuery("2001:db8::1", "2001:db8::1", false, false));

    // Upper bound is the min IP and is not inclusive
    assertEquals(new MatchNoDocsQuery(), ft.rangeQuery("::", "::", true, false));

    // Lower bound is the max IP and is not inclusive
    assertEquals(new MatchNoDocsQuery(), ft.rangeQuery("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff",
            "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff", false, true));

    assertEquals(
            InetAddressPoint.newRangeQuery("field", InetAddresses.forString("::"),
                    InetAddresses.forString("::fffe:ffff:ffff")),
            // same lo/hi values but inclusive=false so this won't match anything
            ft.rangeQuery("::", "0.0.0.0", true, false));

    assertEquals(
            InetAddressPoint.newRangeQuery("field", InetAddresses.forString("::1:0:0:0"),
                    XInetAddressPoint.MAX_VALUE),
            // same lo/hi values but inclusive=false so this won't match anything
            ft.rangeQuery("255.255.255.255", "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff", false, true));

    assertEquals(
            // lower bound is ipv4, upper bound is ipv6
            InetAddressPoint.newRangeQuery("field", InetAddresses.forString("192.168.1.7"),
                    InetAddresses.forString("2001:db8::")),
            ft.rangeQuery("::ffff:c0a8:107", "2001:db8::", true, true));

    ft.setIndexOptions(IndexOptions.NONE);
    IllegalArgumentException e = expectThrows(IllegalArgumentException.class,
            () -> ft.rangeQuery("::1", "2001::", true, true));
    assertEquals("Cannot search on field [field] since it is not indexed.", e.getMessage());
}

From source file:org.elasticsearch.index.mapper.IpFieldTypeTests.java

License:Apache License

public void testRangeQuery() {
    MappedFieldType ft = createDefaultFieldType();
    ft.setName("field");

    assertEquals(//from  www. j av  a  2  s .c  o  m
            InetAddressPoint.newRangeQuery("field", InetAddresses.forString("::"), InetAddressPoint.MAX_VALUE),
            ft.rangeQuery(null, null, randomBoolean(), randomBoolean()));

    assertEquals(
            InetAddressPoint.newRangeQuery("field", InetAddresses.forString("::"),
                    InetAddresses.forString("192.168.2.0")),
            ft.rangeQuery(null, "192.168.2.0", randomBoolean(), true));

    assertEquals(
            InetAddressPoint.newRangeQuery("field", InetAddresses.forString("::"),
                    InetAddresses.forString("192.168.1.255")),
            ft.rangeQuery(null, "192.168.2.0", randomBoolean(), false));

    assertEquals(InetAddressPoint.newRangeQuery("field", InetAddresses.forString("2001:db8::"),
            InetAddressPoint.MAX_VALUE), ft.rangeQuery("2001:db8::", null, true, randomBoolean()));

    assertEquals(InetAddressPoint.newRangeQuery("field", InetAddresses.forString("2001:db8::1"),
            InetAddressPoint.MAX_VALUE), ft.rangeQuery("2001:db8::", null, false, randomBoolean()));

    assertEquals(
            InetAddressPoint.newRangeQuery("field", InetAddresses.forString("2001:db8::"),
                    InetAddresses.forString("2001:db8::ffff")),
            ft.rangeQuery("2001:db8::", "2001:db8::ffff", true, true));

    assertEquals(
            InetAddressPoint.newRangeQuery("field", InetAddresses.forString("2001:db8::1"),
                    InetAddresses.forString("2001:db8::fffe")),
            ft.rangeQuery("2001:db8::", "2001:db8::ffff", false, false));

    assertEquals(
            InetAddressPoint.newRangeQuery("field", InetAddresses.forString("2001:db8::2"),
                    InetAddresses.forString("2001:db8::")),
            // same lo/hi values but inclusive=false so this won't match anything
            ft.rangeQuery("2001:db8::1", "2001:db8::1", false, false));

    // Upper bound is the min IP and is not inclusive
    assertEquals(new MatchNoDocsQuery(), ft.rangeQuery("::", "::", true, false));

    // Lower bound is the max IP and is not inclusive
    assertEquals(new MatchNoDocsQuery(), ft.rangeQuery("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff",
            "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff", false, true));

    assertEquals(
            InetAddressPoint.newRangeQuery("field", InetAddresses.forString("::"),
                    InetAddresses.forString("::fffe:ffff:ffff")),
            // same lo/hi values but inclusive=false so this won't match anything
            ft.rangeQuery("::", "0.0.0.0", true, false));

    assertEquals(
            InetAddressPoint.newRangeQuery("field", InetAddresses.forString("::1:0:0:0"),
                    InetAddressPoint.MAX_VALUE),
            // same lo/hi values but inclusive=false so this won't match anything
            ft.rangeQuery("255.255.255.255", "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff", false, true));

    assertEquals(
            // lower bound is ipv4, upper bound is ipv6
            InetAddressPoint.newRangeQuery("field", InetAddresses.forString("192.168.1.7"),
                    InetAddresses.forString("2001:db8::")),
            ft.rangeQuery("::ffff:c0a8:107", "2001:db8::", true, true));

    ft.setIndexOptions(IndexOptions.NONE);
    IllegalArgumentException e = expectThrows(IllegalArgumentException.class,
            () -> ft.rangeQuery("::1", "2001::", true, true));
    assertEquals("Cannot search on field [field] since it is not indexed.", e.getMessage());
}