As consultas geográficas classificam-se nos seguintes tipos: consulta por distância geográfica, consulta por caixa delimitadora geográfica e consulta por polígono geográfico.
Pré-requisitos
Instância OTSClient inicializada. Para mais informações, consulte Inicializar uma instância OTSClient.
Tabela de dados criada e preenchida. Para mais informações, consulte Criar uma tabela de dados e Gravar dados.
Índice de pesquisa criado para a tabela de dados. Para mais informações, consulte Criar um índice de pesquisa.
Consulta por distância geográfica
Na consulta por distância geográfica, especifique uma área circular definindo um ponto central e um raio. O Tablestore retorna as linhas cujo valor em determinada coluna esteja dentro dessa área.
-
Parâmetros
Parâmetro
Descrição
table_name
Nome da tabela de dados.
index_name
Nome do índice de pesquisa.
query
Instrução de consulta do índice de pesquisa. Para usar a consulta por distância geográfica, defina o tipo como QueryTypeConst::GEO_DISTANCE_QUERY.
field_name
Nome da coluna a consultar. Este parâmetro exige o tipo de dados GEOPOINT.
center_point
Par de coordenadas (latitude e longitude) do ponto central.
Formato:
latitude,longitude. Latitude válida: [-90,+90]. Longitude válida: [-180,+180]. Exemplo:35.8,-45.91.distance
Raio da área geográfica circular. Tipo de dados DOUBLE. Unidade: metros.
-
Exemplos
O exemplo abaixo consulta todas as linhas da tabela de dados cuja coluna geo esteja a até 1.000 metros do ponto central
30.001,120.001.$request = array( 'table_name' => 'php_sdk_test', 'index_name' => 'php_sdk_test_search_index', 'search_query' => array( 'offset' => 0, 'limit' => 2, 'get_total_count' => true, 'query' => array( 'query_type' => QueryTypeConst::GEO_DISTANCE_QUERY, 'query' => array( 'field_name' => 'geo', 'center_point' => '30.001,120.001', 'distance' => 1000 ) ), 'sort' => array( array( 'geo_distance_sort' => array( 'field_name' => 'geo', 'order' => SortOrderConst::SORT_ORDER_ASC, 'distance_type' => GeoDistanceTypeConst::GEO_DISTANCE_PLANE, 'points' => array('30,120') ) ), ) ), 'columns_to_get' => array( 'return_type' => ColumnReturnTypeConst::RETURN_SPECIFIED, 'return_names' => array('geo') ) ); $response = $otsClient->search($request);
Consulta por caixa delimitadora geográfica
Na consulta por caixa delimitadora geográfica, especifique uma área retangular informando os cantos superior esquerdo e inferior direito. O Tablestore retorna as linhas cujo valor em determinada coluna esteja dentro dessa área.
-
Parâmetros
Parâmetro
Descrição
table_name
Nome da tabela de dados.
index_name
Nome do índice de pesquisa.
query
Instrução de consulta do índice de pesquisa. Para usar a consulta por caixa delimitadora geográfica, defina o tipo como QueryTypeConst::GEO_BOUNDING_BOX_QUERY.
field_name
Nome da coluna a consultar. Este parâmetro exige o tipo de dados GEOPOINT.
top_left
Par de coordenadas do canto superior esquerdo da área retangular.
bottom_right
Par de coordenadas do canto inferior direito da área retangular. A definição da área requer ambos os pontos.
Formato:
latitude,longitude. Latitude válida: [-90,+90]. Longitude válida: [-180,+180]. Exemplo:35.8,-45.91. -
Exemplos
O exemplo abaixo consulta todas as linhas da tabela de dados cuja coluna geo esteja dentro da área retangular definida pelo ponto superior esquerdo (coordenadas:
31,119) e pelo ponto inferior direito (coordenadas:29,121).$request = array( 'table_name' => 'php_sdk_test', 'index_name' => 'php_sdk_test_search_index', 'search_query' => array( 'offset' => 0, 'limit' => 2, 'get_total_count' => true, 'query' => array( 'query_type' => QueryTypeConst::GEO_BOUNDING_BOX_QUERY, 'query' => array( 'field_name' => 'geo', 'top_left' => '31,119', 'bottom_right' => '29,121' ) ), 'sort' => array( array( 'geo_distance_sort' => array( 'field_name' => 'geo', 'order' => SortOrderConst::SORT_ORDER_ASC, 'distance_type' => GeoDistanceTypeConst::GEO_DISTANCE_PLANE, 'points' => array('30,120') ) ), ) ), 'columns_to_get' => array( 'return_type' => ColumnReturnTypeConst::RETURN_SPECIFIED, 'return_names' => array('geo') ) ); $response = $otsClient->search($request);
Consulta por polígono geográfico
Na consulta por polígono geográfico, especifique uma área poligonal fornecendo pares de coordenadas de múltiplos pontos. O Tablestore retorna as linhas cujo valor em determinada coluna esteja contido nessa área.
-
Parâmetros
Parâmetro
Descrição
table_name
Nome da tabela de dados.
index_name
Nome do índice de pesquisa.
query
Instrução de consulta do índice de pesquisa. Para usar a consulta por polígono geográfico, defina o tipo como QueryTypeConst::GEO_POLYGON_QUERY.
field_name
Nome da coluna a consultar. Este parâmetro exige o tipo de dados GEOPOINT.
points
Pares de coordenadas dos pontos que definem a área poligonal. Use múltiplos pares para especificar o polígono.
Formato:
latitude,longitude. Latitude válida: [-90,+90]. Longitude válida: [-180,+180]. Exemplo:35.8,-45.91. -
Exemplos
O exemplo abaixo consulta todas as linhas da tabela de dados cuja coluna geo esteja dentro da área poligonal definida pelos pontos com coordenadas
31,120,29,121e29,119.$request = array( 'table_name' => 'php_sdk_test', 'index_name' => 'php_sdk_test_search_index', 'search_query' => array( 'offset' => 0, 'limit' => 2, 'get_total_count' => true, 'query' => array( 'query_type' => QueryTypeConst::GEO_POLYGON_QUERY, 'query' => array( 'field_name' => 'geo', 'points' => array( "31,120", "29,121", "29,119" ) ) ), 'sort' => array( array( 'geo_distance_sort' => array( 'field_name' => 'geo', 'order' => SortOrderConst::SORT_ORDER_ASC, 'distance_type' => GeoDistanceTypeConst::GEO_DISTANCE_PLANE, 'points' => array('30,120') ) ), ) ), 'columns_to_get' => array( 'return_type' => ColumnReturnTypeConst::RETURN_SPECIFIED, 'return_names' => array('geo') ) ); $response = $otsClient->search($request);
Perguntas frequentes
Referências
-
Ao consultar dados com um índice de pesquisa, utilize os seguintes métodos: consulta por termo, consulta por termos, consulta match all, consulta match, consulta match phrase, consulta por prefixo, consulta por intervalo, consulta por curinga, consulta booleana, consulta geográfica, consulta aninhada e consulta exists. Combine diferentes métodos para consultar dados sob múltiplas dimensões conforme as necessidades do seu negócio.
Para ordenar ou paginar as linhas correspondentes, use o recurso de ordenação e paginação. Para mais informações, consulte Ordenação e paginação.
Para agrupar resultados com base em uma coluna específica, use o recurso de colapso (distinct). Isso garante que dados do tipo especificado apareçam apenas uma vez nos resultados. Para mais informações, consulte Colapso (distinct).
Para analisar dados da tabela, como obter valores extremos, soma e total de linhas, execute operações de agregação ou instruções SQL. Para mais informações, consulte Agregação e Consulta SQL.
Para obter rapidamente todas as linhas correspondentes sem ordenação, chame as operações ParallelScan e ComputeSplits para usar a varredura paralela. Para mais informações, consulte Varredura paralela.