Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ protected Query doToQuery(QueryShardContext context) throws IOException {
throw new QueryShardException(context, "illegal latitude value [{}] for [{}]", point.lat(),
GeoPolygonQueryBuilder.NAME);
}
if (!GeoUtils.isValidLongitude(point.lat())) {
if (!GeoUtils.isValidLongitude(point.lon())) {
throw new QueryShardException(context, "illegal longitude value [{}] for [{}]", point.lon(),
GeoPolygonQueryBuilder.NAME);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -254,4 +254,38 @@ public void testIgnoreUnmapped() throws IOException {
QueryShardException e = expectThrows(QueryShardException.class, () -> failingQueryBuilder.toQuery(createShardContext()));
assertThat(e.getMessage(), containsString("failed to find geo_point field [unmapped]"));
}

public void testPointValidation() throws IOException {
assumeTrue("test runs only when at least a type is registered", getCurrentTypes().length > 0);
QueryShardContext context = createShardContext();
String queryInvalidLat = "{\n" +
" \"geo_polygon\":{\n" +
" \"" + GEO_POINT_FIELD_NAME + "\":{\n" +
" \"points\":[\n" +
" [-70, 140],\n" +
" [-80, 30],\n" +
" [-90, 20]\n" +
" ]\n" +
" }\n" +
" }\n" +
"}\n";

QueryShardException e1 = expectThrows(QueryShardException.class, () -> parseQuery(queryInvalidLat).toQuery(context));
assertThat(e1.getMessage(), containsString("illegal latitude value [140.0] for [geo_polygon]"));

String queryInvalidLon = "{\n" +
" \"geo_polygon\":{\n" +
" \"" + GEO_POINT_FIELD_NAME + "\":{\n" +
" \"points\":[\n" +
" [-70, 40],\n" +
" [-80, 30],\n" +
" [-190, 20]\n" +
" ]\n" +
" }\n" +
" }\n" +
"}\n";

QueryShardException e2 = expectThrows(QueryShardException.class, () -> parseQuery(queryInvalidLon).toQuery(context));
assertThat(e2.getMessage(), containsString("illegal longitude value [-190.0] for [geo_polygon]"));
}
}
Original file line number Diff line number Diff line change
@@ -1,19 +1,12 @@
{
"filtered": {
"query": {
"match_all": {}
},
"filter": {
"geo_polygon": {
"location": {
"points": {
"points": [
[-70, 40],
[-80, 30],
[-90, 20]
]
}
}
"geo_polygon": {
"location": {
"points": {
"points": [
[-70, 40],
[-80, 30],
[-90, 20]
]
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,13 @@
{
"filtered": {
"query": {
"match_all": {}
},
"filter": {
"geo_polygon": {
"location": {
"points": [
[-70, 40],
[-80, 30],
[-90, 20]
],
"something_else": {
"geo_polygon": {
"location": {
"points": [
[-70, 40],
[-80, 30],
[-90, 20]
],
"something_else": {

}

}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,5 @@
{
"filtered": {
"query": {
"match_all": {}
},
"filter": {
"geo_polygon": {
"location": ["WRONG"]
}
}
"geo_polygon": {
"location": ["WRONG"]
}
}
Original file line number Diff line number Diff line change
@@ -1,19 +1,12 @@
{
"filtered": {
"query": {
"match_all": {}
"geo_polygon": {
"location": {
"points": [
[-70, 40],
[-80, 30],
[-90, 20]
]
},
"filter": {
"geo_polygon": {
"location": {
"points": [
[-70, 40],
[-80, 30],
[-90, 20]
]
},
"bla": true
}
}
"bla": true
}
}
Original file line number Diff line number Diff line change
@@ -1,19 +1,12 @@
{
"filtered": {
"query": {
"match_all": {}
"geo_polygon": {
"location": {
"points": [
[-70, 40],
[-80, 30],
[-90, 20]
]
},
"filter": {
"geo_polygon": {
"location": {
"points": [
[-70, 40],
[-80, 30],
[-90, 20]
]
},
"bla": ["array"]
}
}
"bla": ["array"]
}
}