private void assertGeoBoundingBoxQuery(String query) throws IOException { QueryShardContext shardContext = createShardContext(); Query parsedQuery = parseQuery(query).toQuery(shardContext); if (shardContext.indexVersionCreated().before(Version.V_2_2_0)) { LegacyInMemoryGeoBoundingBoxQuery filter = (LegacyInMemoryGeoBoundingBoxQuery) parsedQuery; assertThat(filter.fieldName(), equalTo(GEO_POINT_FIELD_NAME)); assertThat(filter.topLeft().lat(), closeTo(40, 1E-5)); assertThat(filter.topLeft().lon(), closeTo(-70, 1E-5)); assertThat(filter.bottomRight().lat(), closeTo(30, 1E-5)); assertThat(filter.bottomRight().lon(), closeTo(-80, 1E-5)); } else if (shardContext.indexVersionCreated().before(Version.V_5_0_0_beta1)) { GeoPointInBBoxQuery q = (GeoPointInBBoxQuery) parsedQuery; assertThat(q.getField(), equalTo(GEO_POINT_FIELD_NAME)); assertThat(q.getMaxLat(), closeTo(40, 1E-5)); assertThat(q.getMinLon(), closeTo(-70, 1E-5)); assertThat(q.getMinLat(), closeTo(30, 1E-5)); assertThat(q.getMaxLon(), closeTo(-80, 1E-5)); } }
@Override protected void doAssertLuceneQuery( GeoDistanceRangeQueryBuilder queryBuilder, Query query, QueryShardContext context) throws IOException { Version version = context.indexVersionCreated(); if (version.before(Version.V_2_2_0)) { assertLegacyQuery(queryBuilder, query); } else { assertGeoPointQuery(queryBuilder, query); } }
@Override protected void doAssertLuceneQuery( GeoBoundingBoxQueryBuilder queryBuilder, Query query, SearchContext searchContext) throws IOException { QueryShardContext context = searchContext.getQueryShardContext(); MappedFieldType fieldType = context.fieldMapper(queryBuilder.fieldName()); if (fieldType == null) { assertTrue("Found no indexed geo query.", query instanceof MatchNoDocsQuery); } else { if (context.indexVersionCreated().before(Version.V_2_2_0)) { if (queryBuilder.type() == GeoExecType.INDEXED) { assertTrue("Found no indexed geo query.", query instanceof ConstantScoreQuery); } else { assertTrue( "Found no indexed geo query.", query instanceof LegacyInMemoryGeoBoundingBoxQuery); } } else if (context.indexVersionCreated().before(Version.V_5_0_0_beta1)) { assertTrue("Found no indexed geo query.", query instanceof GeoPointInBBoxQuery); } else { assertTrue("Found no indexed geo query.", query instanceof Query); } } }