Uma consulta exists também é conhecida como consulta NULL ou consulta de valor NULL. Esse tipo de consulta verifica a existência de uma coluna em uma linha de dados esparsos. Por exemplo, consulte as linhas em que o valor da coluna address não está vazio.
Para verificar se uma coluna contém valores vazios, use ExistsQuery combinado com must_not_queries do BoolQuery.
-
O sistema considera que uma coluna não existe quando uma das condições a seguir é atendida. Neste exemplo, usa-se a coluna city.
O tipo da coluna city no índice de busca é básico, como keyword. Se uma linha na tabela de dados não possuir a coluna city, o índice de busca considerará que essa coluna não existe.
O tipo da coluna city no índice de busca é básico, como keyword. Caso o valor da coluna city seja um array vazio na tabela de dados ("city" = "[]"), o índice de busca tratará a coluna city como inexistente.
Pré-requisitos
Instância OTSClient inicializada. Para mais informações, consulte Inicializar uma instância OTSClient.
Tabela de dados criada e preenchida. Para mais detalhes, veja Criar uma tabela de dados e Gravar dados.
Índice de busca criado para a tabela de dados. Consulte Criar um índice de busca para mais informações.
Parâmetros
|
Parâmetro |
Descrição |
|
table_name |
Nome da tabela de dados. |
|
index_name |
Nome do índice de busca. |
|
field_name |
Nome da coluna a ser consultada. |
|
query_type |
Tipo de consulta. Defina o tipo de consulta como QueryTypeConst::EXISTS_QUERY. Nota
Não é possível consultar colunas aninhadas diretamente. Para consultar uma coluna aninhada, encapsule NestedQuery especificando o caminho da coluna aninhada e uma subconsulta. A subconsulta pode ser de qualquer tipo. Para mais informações, consulte Consulta aninhada. |
Exemplos
Esta seção apresenta exemplos de execução de uma consulta exists.
Consultar linhas não vazias na coluna text
O código de exemplo a seguir demonstra como consultar linhas com valores não vazios na coluna text de uma tabela.
$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::EXISTS_QUERY,
'query' => array(
'field_name' => 'text'
)
)
),
'columns_to_get' => array(
'return_type' => ColumnReturnTypeConst::RETURN_SPECIFIED,
'return_names' => array('keyword', 'long', 'array')
)
);
$response = $otsClient->search($request);
Consultar linhas não vazias em uma subcoluna de uma coluna aninhada
O exemplo de código abaixo ilustra como consultar linhas com valores não vazios na subcoluna nested_long de uma coluna aninhada em uma tabela.
$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::NESTED_QUERY,
'query' => array(
'path' => "nested",
'query' => array(
'query_type' => QueryTypeConst::EXISTS_QUERY,
'query' => array(
'field_name' => 'nested.nested_long',
)
),
'score_mode' => ScoreModeConst::SCORE_MODE_AVG
)
)
),
'columns_to_get' => array(
'return_type' => ColumnReturnTypeConst::RETURN_SPECIFIED,
'return_names' => array('nested')
)
);
$response = $this->otsClient->search($request);
Perguntas frequentes
Referências
-
Ao usar um índice de busca para consultar dados, os seguintes métodos estão disponíveis: consulta term, consulta terms, consulta match all, consulta match, consulta match phrase, consulta prefix, consulta range, consulta wildcard, consulta Boolean, consulta geo, consulta aninhada e consulta exists. Combine diferentes métodos para recuperar dados sob múltiplas dimensões conforme suas necessidades de negócio.
Para ordenar ou paginar as linhas que atendem aos critérios da consulta, utilize o recurso de ordenação e paginação. Para mais detalhes, consulte Ordenação e paginação.
Caso precise agrupar o conjunto de resultados com base em uma coluna específica, use o recurso de collapse (distinct). Isso garante que dados do tipo especificado apareçam apenas uma vez nos resultados da consulta. Veja Collapse (distinct) para mais informações.
Para analisar dados em uma tabela, como obter valores extremos, somas e contagem total de linhas, execute operações de agregação ou instruções SQL. Consulte Agregação e Consulta SQL para orientações adicionais.
Se o objetivo for obter rapidamente todas as linhas correspondentes aos critérios sem necessidade de ordenação, chame as operações ParallelScan e ComputeSplits para usar o recurso de varredura paralela. Mais detalhes estão disponíveis em Varredura paralela.