Todos los productos
Search
Centro de documentos

Tablestore:Ejecución de una consulta geográfica

Última actualización: Sep 22, 2026

Las consultas geográficas se clasifican en los siguientes tipos: geo-distance query, geo-bounding box query y geo-polygon query.

Requisitos previos

Geo-distance query

Para ejecutar una geo-distance query, especifique un área geográfica circular mediante un punto central y un radio. Tablestore devuelve las filas donde el valor de una columna específica se encuentra dentro de dicha área geográfica circular.

  • Parámetros

    Parámetro

    Descripción

    FieldName

    Nombre de la columna que desea consultar. El valor de este parámetro es del tipo de datos GEOPOINT.

    CenterPoint

    Par de coordenadas del punto central. Este par está formado por valores de latitud y longitud.

    El par de coordenadas utiliza el formato latitud,longitud. Valores válidos de latitud: [-90,+90]. Valores válidos de longitud: [-180,+180]. Ejemplo: "35.8,-45.91".

    DistanceInMeter

    Radio del área geográfica circular. El valor de este parámetro es del tipo de datos DOUBLE. Unidad: metros.

    Query

    Instrucción de consulta para el índice de búsqueda. Establezca el tipo de consulta como GeoDistanceQuery.

    TableName

    Nombre de la tabla de datos.

    IndexName

    Nombre del índice de búsqueda.

    ColumnsToGet

    Indica si se devuelven todas las columnas de las filas que cumplen las condiciones de la consulta. Puede especificar los parámetros ReturnAll, Columns y ReturnAllFromIndex.

    De forma predeterminada, ReturnAll es false, lo que significa que solo se devuelven las columnas de la clave principal. Para devolver columnas adicionales, utilice una de las siguientes opciones:

    • Establezca Columns para indicar qué columnas se deben devolver.

    • Establezca ReturnAllFromIndex en true para devolver todas las columnas del índice de búsqueda.

    Establezca ReturnAll en true para devolver todas las columnas de la tabla de datos.

  • Ejemplo

    A continuación se muestra un código de ejemplo para consultar las filas donde el valor de la columna geo_type_col se encuentra dentro de un área geográfica circular en una tabla.

    /// <summary> 
    /// Query the rows in which the value of the geo_type_col column falls within a circular geographical area in a table. 
    /// </summary>
    /// <param name="client"></param>
    public static void GeoDistanceQuery(OTSClient client)
    {
        SearchQuery searchQuery = new SearchQuery();
        GeoDistanceQuery geoDistanceQuery = new GeoDistanceQuery(); // Set the query type to GeoDistanceQuery. 
        geoDistanceQuery.FieldName = Geo_type_col;
        geoDistanceQuery.CenterPoint = "10,11"; // Specify the coordinate pair for a central point. 
        geoDistanceQuery.DistanceInMeter = 10000; // Set the radius of the circular geographical area to 10,000. Unit: meter. 
        searchQuery.Query = geoDistanceQuery;
    
        SearchRequest searchRequest = new SearchRequest(TableName, IndexName, searchQuery);
    
        ColumnsToGet columnsToGet = new ColumnsToGet();
        columnsToGet.Columns = new List<string>() { Geo_type_col }; // Specify that the Geo_type_col column is returned. 
        searchRequest.ColumnsToGet = columnsToGet;
    
        SearchResponse response = client.Search(searchRequest);
        Console.WriteLine(response.TotalCount);
    }
                

Geo-bounding box query

Para ejecutar una geo-bounding box query, especifique un área geográfica rectangular mediante una esquina superior izquierda y una esquina inferior derecha. Tablestore devuelve las filas donde el valor de una columna específica se encuentra dentro de dicha área geográfica rectangular.

  • Parámetros

    Parámetro

    Descripción

    FieldName

    Nombre de la columna que desea consultar. El valor de este parámetro es del tipo de datos GEOPOINT.

    TopLeft

    Par de coordenadas de la esquina superior izquierda del área geográfica rectangular.

    BottomRight

    Par de coordenadas de la esquina inferior derecha del área geográfica rectangular. Los pares de coordenadas de ambas esquinas definen un área geográfica rectangular única.

    El par de coordenadas utiliza el formato latitud,longitud. Valores válidos de latitud: [-90,+90]. Valores válidos de longitud: [-180,+180]. Ejemplo: "35.8,-45.91".

    Query

    Instrucción de consulta para el índice de búsqueda. Establezca el tipo de consulta como GeoBoundingBoxQuery.

    TableName

    Nombre de la tabla de datos.

    IndexName

    Nombre del índice de búsqueda.

    ColumnsToGet

    Indica si se devuelven todas las columnas de las filas que cumplen las condiciones de la consulta. Puede especificar los parámetros ReturnAll, Columns y ReturnAllFromIndex.

    De forma predeterminada, ReturnAll es false, lo que significa que solo se devuelven las columnas de la clave principal. Para devolver columnas adicionales, utilice una de las siguientes opciones:

    • Establezca Columns para indicar qué columnas se deben devolver.

    • Establezca ReturnAllFromIndex en true para devolver todas las columnas del índice de búsqueda.

    Establezca ReturnAll en true para devolver todas las columnas de la tabla de datos.

  • Ejemplo

    A continuación se muestra un código de ejemplo para consultar las filas donde el valor de la columna geo_type_col se encuentra dentro de un área geográfica rectangular. Esta área tiene su esquina superior izquierda en "10,0" y su esquina inferior derecha en "0,10".

    /// <summary>
    /// Query the rows in which the value of the geo_type_col column is within a rectangular geographical area in a table. The value of the geo_type_col column is of the GEOPOINT data type. The rectangular geographical area is specified by an upper-left corner whose coordinate pair is "10,0" and a lower-right corner whose coordinate pair is "0,10". 
    /// </summary>
    /// <param name="client"></param>
    public static void GeoBoundingBoxQuery(OTSClient client)
    {
        SearchQuery searchQuery = new SearchQuery();
        GeoBoundingBoxQuery geoBoundingBoxQuery = new GeoBoundingBoxQuery(); // Set the query type to GeoBoundingBoxQuery. 
        geoBoundingBoxQuery.FieldName = Geo_type_col; // Specify the name of the column that you want to query. 
        geoBoundingBoxQuery.TopLeft = "10,0"; // Specify the coordinate pair for the upper-left corner of the rectangular geographical area. 
        geoBoundingBoxQuery.BottomRight = "0,10"; // Specify coordinate pair for the lower-right corner of the rectangular geographical area. 
        searchQuery.Query = geoBoundingBoxQuery;
    
        SearchRequest searchRequest = new SearchRequest(TableName, IndexName, searchQuery);
    
        var columnsToGet = new ColumnsToGet();
        columnsToGet.Columns = new List<string> { Geo_type_col }; // Specify that the Geo_type_col column is returned. 
        searchRequest.ColumnsToGet = columnsToGet;
    
        SearchResponse response = client.Search(searchRequest);
        Console.WriteLine(response.TotalCount);
    }

Geo-polygon query

Para ejecutar una geo-polygon query, especifique un área geográfica poligonal mediante los pares de coordenadas de varios puntos. Tablestore devuelve las filas donde el valor de una columna específica se encuentra dentro de dicha área geográfica poligonal.

  • Parámetros

    Parámetro

    Descripción

    FieldName

    Nombre de la columna que desea consultar. El valor de este parámetro es del tipo de datos GEOPOINT.

    Points

    Pares de coordenadas de los puntos que definen un área geográfica poligonal.

    El par de coordenadas utiliza el formato latitud,longitud. Valores válidos de latitud: [-90,+90]. Valores válidos de longitud: [-180,+180]. Ejemplo: "35.8,-45.91".

    Query

    Instrucción de consulta para el índice de búsqueda. Establezca el tipo de consulta como GeoPolygonQuery.

    TableName

    Nombre de la tabla de datos.

    IndexName

    Nombre del índice de búsqueda.

    ColumnsToGet

    Indica si se devuelven todas las columnas de las filas que cumplen las condiciones de la consulta. Puede especificar los parámetros ReturnAll, Columns y ReturnAllFromIndex.

    De forma predeterminada, ReturnAll es false, lo que significa que solo se devuelven las columnas de la clave principal. Para devolver columnas adicionales, utilice una de las siguientes opciones:

    • Establezca Columns para indicar qué columnas se deben devolver.

    • Establezca ReturnAllFromIndex en true para devolver todas las columnas del índice de búsqueda.

    Establezca ReturnAll en true para devolver todas las columnas de la tabla de datos.

  • Ejemplo

    A continuación se muestra un código de ejemplo para consultar las filas donde el valor de la columna geo_type_col se encuentra dentro de un área geográfica poligonal en una tabla.

    /// <summary>
    /// Query the rows in which the value of the geo_type_col column is within a polygon geographical area in a table. 
    /// </summary>
    /// <param name="client"></param>
    public static void GeoPolygonQuery(OTSClient client)
    {
        SearchQuery searchQuery = new SearchQuery();
        GeoPolygonQuery geoPolygonQuery = new GeoPolygonQuery(); // Set the query type to GeoPolygonQuery. 
        geoPolygonQuery.FieldName = Geo_type_col;
        geoPolygonQuery.Points = new List<string>() { "0,0", "10,0", "10,10" }; // Specify coordinate pairs for vertices of a polygon geographical area. 
        searchQuery.Query = geoPolygonQuery;
    
        SearchRequest searchRequest = new SearchRequest(TableName, IndexName, searchQuery);
    
        ColumnsToGet columnsToGet = new ColumnsToGet();
        columnsToGet.Columns = new List<string>() { Geo_type_col }; // Specify that the Geo_type_col column is returned. 
        searchRequest.ColumnsToGet = columnsToGet;
    
        SearchResponse response = client.Search(searchRequest);
        Console.WriteLine(response.TotalCount);
    }
                

Preguntas frecuentes

Referencias

  • Cuando utiliza un índice de búsqueda para consultar datos, puede emplear los siguientes métodos de consulta: term query, terms query, match all query, match query, match phrase query, prefix query, range query, wildcard query, Boolean query, geo query, nested query y exists query. Según sus requisitos de negocio, estos métodos le permiten consultar datos desde múltiples dimensiones.

    Mediante las funciones de ordenación y paginación, puede ordenar o paginar las filas que cumplen las condiciones de la consulta. Para obtener más información, consulte Sorting and paging.

    La función collapse (distinct) permite contraer el conjunto de resultados con base en una columna específica. De esta manera, los datos del tipo indicado aparecen solo una vez en los resultados de la consulta. Para obtener más información, consulte Collapse (distinct).

  • Si necesita analizar datos de una tabla, utilice la función de agregación de la operación Search o ejecute instrucciones SQL. Por ejemplo, puede obtener los valores mínimo y máximo, la suma y el número total de filas. Para obtener más información, consulte Aggregation y SQL query.

  • Si desea obtener todas las filas que cumplen las condiciones de la consulta sin necesidad de ordenarlas, llame a las operaciones ParallelScan y ComputeSplits para usar la función de exploración paralela. Para obtener más información, consulte Parallel scan.