Todos os produtos
Search
Central de documentação

Tablestore:Exists query

Última atualização: Aug 20, 2026

A consulta Exists no Tablestore SDK for Java filtra dados conforme a existência de um campo específico.

Pré-requisitos

Instale o Tablestore SDK for Java e inicialize um cliente.

Descrição do recurso

A consulta Exists (ExistsQuery, também chamada de consulta NULL ou consulta de valor nulo) identifica linhas em que determinado campo indexado existe. O campo é considerado inexistente se a coluna correspondente não tiver sido gravada na tabela de dados. Arrays vazios também são tratados como campos de array inexistentes.

Ao chamar search, defina o tipo de consulta como ExistsQuery e especifique o nome do campo. Para consultar um campo pai ou subcampo Nested, envolva ExistsQuery em uma NestedQuery. Para identificar linhas em que um campo não existe, adicione ExistsQuery a BoolQuery.mustNotQueries.

SearchResponse search(SearchRequest request)

O exemplo a seguir consulta linhas nas quais o campo city existe. A consulta retorna até 10 linhas e o número total de correspondências.

String tableName = "example_table";
String indexName = "example_index";

ExistsQuery existsQuery = new ExistsQuery();
existsQuery.setFieldName("city");

SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(existsQuery);
searchQuery.setLimit(10);
searchQuery.setTrackTotalCount(SearchQuery.TRACK_TOTAL_COUNT);

SearchRequest request = new SearchRequest(tableName, indexName, searchQuery);
SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
columnsToGet.setReturnAll(true);
request.setColumnsToGet(columnsToGet);

SearchResponse response = client.search(request);
System.out.println(response.getTotalCount());
System.out.println(response.getRows());

Parâmetros

Solicitação de busca

request é um objeto SearchRequest com os seguintes parâmetros.

Nome

Tipo

Descrição

tableName (obrigatório)

String

Nome da tabela de dados.

indexName (obrigatório)

String

Nome do índice de busca.

searchQuery (obrigatório)

SearchQuery

Condição de consulta e configurações gerais de busca.

columnsToGet (opcional)

SearchRequest.ColumnsToGet

Colunas a retornar. Sem essa configuração, apenas as colunas de chave primária são retornadas.

timeoutInMillisecond (opcional)

int

Tempo limite de consulta no nível da solicitação, em milissegundos. O valor padrão é -1, que não define um tempo limite específico para a consulta.

routingValues (opcional)

List<PrimaryKey>

Valores de chave primária correspondentes aos campos de roteamento personalizado. Não defina este parâmetro se o roteamento personalizado não estiver configurado.

Configurações de consulta

request.searchQuery é um objeto SearchQuery com os seguintes parâmetros.

Nome

Tipo

Descrição

query (obrigatório)

Query

Condição de consulta. Defina este parâmetro como um objeto ExistsQuery para realizar uma consulta Exists.

offset (opcional)

Integer

Posição inicial da consulta.

limit (opcional)

Integer

Número máximo de linhas a retornar. Defina este parâmetro como 0 para não retornar linhas.

collapse (opcional)

Collapse

Configurações de colapso de campo para deduplicar resultados por um campo especificado. Para detalhes de configuração, consulte Collapse query results.

sort (opcional)

Sort

Ordem de classificação dos resultados. Para detalhes de configuração, consulte Sort and paginate results.

trackTotalCount (opcional)

int

Número máximo esperado de linhas correspondentes a contar. O valor padrão é TRACK_TOTAL_COUNT_DISABLED, que desativa a contagem. Defina este parâmetro como TRACK_TOTAL_COUNT para contar todas as linhas correspondentes. Valores menores melhoram o desempenho da consulta.

filter (opcional)

SearchFilter

Filtro aplicado aos resultados de query.

aggregationList (opcional)

List<Aggregation>

Configurações de agregação. Para detalhes de configuração, consulte Aggregation.

groupByList (opcional)

List<GroupBy>

Configurações de agrupamento. Para detalhes de configuração, consulte Aggregation.

token (opcional)

byte[]

Token de paginação. Defina este parâmetro com o valor nextToken da resposta anterior para continuar a leitura de linhas. Ao definir token, o SDK limpa sort, pois o token já contém as condições de classificação.

Condição de consulta

request.searchQuery.query é um objeto ExistsQuery com o seguinte parâmetro.

Nome

Tipo

Descrição

fieldName (obrigatório)

String

Nome do campo indexado a consultar.

Colunas retornadas

request.columnsToGet é um objeto SearchRequest.ColumnsToGet com os seguintes parâmetros.

Nome

Tipo

Descrição

columns (opcional)

List<String>

Colunas de atributo a retornar. Defina este parâmetro apenas se returnAll e returnAllFromIndex forem ambos false. Se omitido, apenas as colunas de chave primária são retornadas.

returnAll (opcional)

boolean

Indica se todas as colunas de atributo da tabela de dados devem ser retornadas. O valor padrão é false.

returnAllFromIndex (opcional)

boolean

Indica se todas as colunas de atributo indexadas devem ser retornadas. O valor padrão é false. Não defina returnAll e returnAllFromIndex como true simultaneamente.

Valores de retorno

search retorna um objeto SearchResponse. A tabela a seguir descreve os campos principais.

Nome

Tipo

Descrição

totalCount

long

Número de linhas correspondentes. Chame getTotalCount() para obter o valor. O resultado depende da configuração trackTotalCount.

rows

List<Row>

Linhas retornadas pela consulta. Chame getRows() para obter o valor. O número de linhas não excede limit.

searchHits

List<SearchHit>

Acertos da consulta. Chame getSearchHits() para obter o valor.

nextToken

byte[]

Token da próxima página. Chame getNextToken() para obter o valor. Se o valor não for null, defina-o como token na próxima solicitação para continuar a leitura de linhas.

isAllSuccess

boolean

Indica se todas as partições do índice foram consultadas com sucesso. Chame isAllSuccess() para obter o valor. Se o valor for false, a resposta conterá resultados parciais e totalCount poderá ser menor que o número real de linhas correspondentes.

Exemplos de cenários

Consultar linhas nas quais um campo não existe

Adicione ExistsQuery a BoolQuery.mustNotQueries para identificar linhas nas quais o campo city não existe.

ExistsQuery existsQuery = new ExistsQuery();
existsQuery.setFieldName("city");

BoolQuery boolQuery = new BoolQuery();
boolQuery.setMustNotQueries(Collections.singletonList(existsQuery));

SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(boolQuery);

Consultar um campo Nested

Envolva ExistsQuery em uma NestedQuery. Para consultar o campo pai, defina fieldName como items. Para consultar um subcampo, especifique o caminho completo, como items.keyword. O exemplo a seguir consulta linhas nas quais o subcampo items.keyword existe.

ExistsQuery existsQuery = new ExistsQuery();
existsQuery.setFieldName("items.keyword");

NestedQuery nestedQuery = new NestedQuery();
nestedQuery.setPath("items");
nestedQuery.setQuery(existsQuery);
nestedQuery.setScoreMode(ScoreMode.None);

SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(nestedQuery);