Geo Polygon Query

edit

A query allowing to include hits that only fall within a polygon of points. Here is an example:

{
    "bool" : {
        "query" : {
            "match_all" : {}
        },
        "filter" : {
            "geo_polygon" : {
                "person.location" : {
                    "points" : [
                        {"lat" : 40, "lon" : -70},
                        {"lat" : 30, "lon" : -80},
                        {"lat" : 20, "lon" : -90}
                    ]
                }
            }
        }
    }
}

Query Options

edit
Option Description

_name

Optional name field to identify the filter

coerce

Set to true to normalize longitude and latitude values to a standard -180:180 / -90:90 coordinate system. (default is false).

ignore_malformed

Set to true to accept geo points with invalid latitude or longitude (default is false).

Allowed Formats

edit
Lat Long as Array
edit

Format in [lon, lat], note, the order of lon/lat here in order to conform with GeoJSON.

{
    "bool" : {
        "must" : {
            "match_all" : {}
        },
        "filter" : {
            "geo_polygon" : {
                "person.location" : {
                    "points" : [
                        [-70, 40],
                        [-80, 30],
                        [-90, 20]
                    ]
                }
            }
        }
    }
}
Lat Lon as String
edit

Format in lat,lon.

{
    "bool" : {
        "must" : {
            "match_all" : {}
        },
        "filter" : {
            "geo_polygon" : {
                "person.location" : {
                    "points" : [
                        "40, -70",
                        "30, -80",
                        "20, -90"
                    ]
                }
            }
        }
    }
}
Geohash
edit
{
    "bool" : {
        "must" : {
            "match_all" : {}
        },
        "filter" : {
            "geo_polygon" : {
                "person.location" : {
                    "points" : [
                        "drn5x1g8cu2y",
                        "30, -80",
                        "20, -90"
                    ]
                }
            }
        }
    }
}

geo_point Type

edit

The query requires the geo_point type to be set on the relevant field.