Elasticsearch Elasticsearch Geo Bounding Box

By Opster Team

Updated: Aug 31, 2023

| 2 min read

Quick links

Introduction

Elasticsearch provides a robust set of tools for dealing with geospatial data. One of these tools is the Geo Bounding Box query, which allows you to search for documents with geo-points that fall within a specified bounding box. This query is particularly useful when you need to find data within a certain geographical area, such as a city, state, or country.

Basic usage of the Geo Bounding Box Query

The Geo Bounding Box query uses the “geo_bounding_box” query, followed by the field name containing the geo-point data. The bounding box is defined by its top-left and bottom-right corners, each specified as a pair of latitude and longitude coordinates.

Here’s a basic example of a Geo Bounding Box query:

GET /_search
{
  "query": {
    "geo_bounding_box": {
      "location": {
        "top_left": {
          "lat": 40.73,
          "lon": -74.1
        },
        "bottom_right": {
          "lat": 40.01,
          "lon": -71.12
        }
      }
    }
  }
}

In this example, “location” is the field containing the geo-point data, and the bounding box is defined by the coordinates (40.73, -74.1) for the top-left corner and (40.01, -71.12) for the bottom-right corner.

Advanced options for the Geo Bounding Box Query

The Geo Bounding Box query also supports several options that can be used to fine-tune the query. For example, you can use the “validation_method” option to control how the query handles invalid bounding boxes. By default, the query will throw an exception if the bounding box is invalid. However, you can set “validation_method” to “IGNORE_MALFORMED” to ignore invalid bounding boxes, or “COERCE” to adjust the bounding box to make it valid.

Here’s an example of a Geo Bounding Box query with the “validation_method” option:

GET /_search
{
  "query": {
    "geo_bounding_box": {
      "location": {
        "top_left": {
          "lat": 40.73,
          "lon": -74.1
        },
        "bottom_right": {
          "lat": 40.01,
          "lon": -71.12
        }
      },
      "validation_method": "COERCE"
    }
  }
}

Accepted formats

In order to accommodate most use cases, the Geo Bounding Box query accepts the top-left and bottom-right geo-points to be specified in different formats than the one presented above. The table below enumerates all supported formats for specifying the bounding box:

Formattop_leftbottom_rightRemark
As array[-74.1, 40.73][-71.12, 40.01]the longitude must be specified first in order to conform to the GeoJSON specification
As string40.73, -74.140.01, -71.12
As Well-Known Text (WKT)"BBOX (-74.1, -71.12, 40.73, 40.01)"
As geohash"dr5r9ydj2y73""drj7teegpus6"

Finally, instead of specifying only the top-left and bottom-right geo-points, it is also possible to specify each vertices individually, as shown below:

GET /_search
{
  "query": {
    "geo_bounding_box": {
      "location": {
        "top": 40.73,
        "left": -74.1,
        "bottom": 40.01,
        "right": -71.12
      }
    }
  }
}

Opster
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.