多元索引支持三种地理位置查询方式,分别是GeoBoundingBoxQuery、GeoDistanceQuery和GeoPolygonQuery。

GeoBoundingBoxQuery

使用GeoBoundingBoxQuery进行地理边界框查询。

根据一个矩形范围的地理位置边界条件查询表中的数据,当一个地理位置点落在给出的矩形范围内时,满足查询条件。

query = GeoBoundingBoxQuery('g', '30.9,112.0', '30.2,119.0')
rows, next_token, total_count, is_all_succeed = client.search(
    table_name, index_name, 
    SearchQuery(query, limit=100, get_total_count=True), 
    ColumnsToGet(return_type=ColumnReturnType.ALL)
)

GeoDistanceQuery

使用GeoDistanceQuery进行地理距离查询。根据一个中心点和距离条件查询表中的数据,当一个地理位置点到指定的中心点的距离不超过指定的值时,满足查询条件。
query = GeoDistanceQuery('g', '32.5,116.5', 300000)
rows, next_token, total_count, is_all_succeed = client.search(
    table_name, index_name, 
    SearchQuery(query, limit=100, get_total_count=True), 
    ColumnsToGet(return_type=ColumnReturnType.ALL)
)

GeoPolygonQuery

使用GeoPolygonQuery进行地理多边形查询。根据一个多边形范围条件查询表中的数据,当一个地理位置点落在指定的多边形内时,满足查询条件。
query = GeoPolygonQuery('g', ['30.9,112.0', '30.5,115.0', '30.3, 117.0', '30.2,119.0'])
rows, next_token, total_count, is_all_succeed = client.search(
    table_name, index_name, 
    SearchQuery(query, limit=100, get_total_count=True), 
    ColumnsToGet(return_type=ColumnReturnType.ALL)
)