0Pricing
Elasticsearch & Full Text Search Systems · Lección

Capacidades de búsqueda geoespacial

Implemente mappings de tipo geo-point y geo-shape para realizar búsquedas basadas en ubicación, consultas de proximidad y agregaciones geoespaciales.

Capacidades de búsqueda geoespacial es una lección gratuita de Elasticsearch & Full Text Search Systems en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Elasticsearch & Full Text Search Systems, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Elasticsearch & Full Text Search Systems incluye 4 lecciones en total.

Partes de esta lección aún no han sido traducidas y se muestran en inglés.

Location-Aware Search

Welcome to Geospatial Search! Many modern applications rely on location data, from finding nearby restaurants to tracking delivery vehicles.

Elasticsearch provides powerful features to index, search, and analyze geographic information efficiently.

The `geo_point` Field

The most common way to store a single geographical location in Elasticsearch is using the geo_point data type.

It represents a specific point on Earth using its latitude and longitude coordinates.

  • Latitude: North-South position (e.g., 48.8584)
  • Longitude: East-West position (e.g., 2.2945)

Mapping `geo_point` Data

Before indexing documents with location data, you need to define a geo_point field in your index mapping. This tells Elasticsearch how to interpret the coordinates.

Try setting up an index named places with a location field of type geo_point:

curl -X PUT "localhost:9200/places?pretty" -H 'Content-Type: application/json' -d'
{
  "mappings": {
    "properties": {
      "location": {
        "type": "geo_point"
      },
      "name": {
        "type": "text"
      }
    }
  }
}'

Adding Geo-Tagged Documents

Now that our places index is mapped, we can index documents containing geo_point data. The location field can accept an object with lat and lon properties.

Index the Eiffel Tower's location:

curl -X PUT "localhost:9200/places/_doc/1?pretty" -H 'Content-Type: application/json' -d'
{
  "name": "Eiffel Tower",
  "location": {
    "lat": 48.8584,
    "lon": 2.2945
  }
}'

Searching by Distance: `geo_distance`

One of the most common geospatial queries is finding documents within a certain radius of a central point. This is achieved using the geo_distance query.

You specify a distance and the reference point, and Elasticsearch returns all matching documents.

`geo_distance` Query Example

Let's find all places within 5 kilometers of the Eiffel Tower's coordinates. This query is perfect for 'find restaurants near me' features.

Run this query:

curl -X GET "localhost:9200/places/_search?pretty" -H 'Content-Type: application/json' -d'
{
  "query": {
    "geo_distance": {
      "distance": "5km",
      "location": {
        "lat": 48.8584,
        "lon": 2.2945
      }
    }
  }
}'

Bounding Box Search (`geo_bounding_box`)

Another useful query is geo_bounding_box, which allows you to find all documents whose geo_point falls within a specified rectangular area.

You define the box by providing its top_left and bottom_right coordinates.

`geo_bounding_box` Query Example

Imagine you have a map view and only want to show results within the current screen. A geo_bounding_box query is ideal for this scenario.

Here's an example searching within a small area around Paris:

curl -X GET "localhost:9200/places/_search?pretty" -H 'Content-Type: application/json' -d'
{
  "query": {
    "geo_bounding_box": {
      "location": {
        "top_left": {
          "lat": 49,
          "lon": 2
        },
        "bottom_right": {
          "lat": 48,
          "lon": 3
        }
      }
    }
  }
}'

Beyond Points: `geo_shape`

While geo_point is great for single locations, what if you need to represent complex geometries like a park boundary, a river, or a country's outline?

For this, Elasticsearch offers the geo_shape data type, which supports various GeoJSON shapes (polygons, lines, multi-points, etc.).

`geo_shape` Mapping & Indexing

To use geo_shape, you first map the field as geo_shape. Then, you can index documents with complex geometries, typically in GeoJSON format. Here's how to map and index a simple polygon representing a district:

curl -X PUT "localhost:9200/regions?pretty" -H 'Content-Type: application/json' -d'
{
  "mappings": {
    "properties": {
      "area": {
        "type": "geo_shape"
      },
      "name": {
        "type": "keyword"
      }
    }
  }
}'

curl -X PUT "localhost:9200/regions/_doc/1?pretty" -H 'Content-Type: application/json' -d'
{
  "name": "Paris District",
  "area": {
    "type": "polygon",
    "coordinates": [
      [
        [2.2, 48.8],
        [2.3, 48.8],
        [2.3, 48.9],
        [2.2, 48.9],
        [2.2, 48.8]
      ]
    ]
  }
}'

Geo Query Challenge

You want to find all restaurants located within the boundaries of a specific park. The park's boundaries are complex and not a simple rectangle.

Geospatial Search Recap

You've explored Elasticsearch's powerful geospatial capabilities!

  • We learned about the geo_point type for single locations (latitude, longitude).
  • We used geo_distance for proximity searches and geo_bounding_box for rectangular area searches.
  • We also introduced the advanced geo_shape type for complex geometries like polygons.

These tools are essential for building sophisticated location-aware applications.

Preguntas frecuentes

¿La lección «Capacidades de búsqueda geoespacial» es gratis?

Sí — el texto completo de «Capacidades de búsqueda geoespacial» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Elasticsearch & Full Text Search Systems, actualiza a CoddyKit PRO. El curso de Elasticsearch & Full Text Search Systems incluye 4 lecciones en total.

¿Qué aprenderé en «Capacidades de búsqueda geoespacial»?

Implemente mappings de tipo geo-point y geo-shape para realizar búsquedas basadas en ubicación, consultas de proximidad y agregaciones geoespaciales. Practicas Elasticsearch & Full Text Search Systems con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Elasticsearch & Full Text Search Systems?

No se requiere experiencia previa. Elasticsearch & Full Text Search Systems en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «Capacidades de búsqueda geoespacial»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Elasticsearch & Full Text Search Systems?

Sí. Cada lección de Elasticsearch & Full Text Search Systems incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Capacidades de búsqueda geoespacial
  2. Gestión de datos de series temporales
  3. Estrategias de despliegue en producción
  4. Gestión del ciclo de vida de los índices
← Volver a Elasticsearch & Full Text Search Systems