Todos os produtos
Search
Central de documentação

Tablestore:Consulta Exists

Última atualização: Jul 03, 2026

A consulta Exists, também conhecida como consulta NULL ou consulta de valor NULL, verifica a existência de uma coluna em linhas de dados esparsos. Por exemplo, consulte as linhas em que o valor da coluna address não esteja vazio.

Nota
  • Para consultar colunas Nested, use a consulta aninhada (nested query).

  • Para verificar se uma coluna contém valores vazios, combine ExistsQuery com mustNotQueries de BoolQuery.

  • O sistema considera que uma coluna não existe nas seguintes condições. Este exemplo usa a coluna city.

    • Se o tipo da coluna city no índice de busca for básico (como keyword) e a linha na tabela de dados não tiver essa coluna, o índice de busca considerará que ela não existe.

    • Se o tipo da coluna city no índice de busca for básico (como keyword) e a linha na tabela de dados contiver um array vazio para essa coluna ("city" = "[]"), o índice de busca considerará que a coluna city não existe.

Operações de API

Chame a operação Search ou ParallelScan e defina o tipo de consulta como ExistsQuery para executar uma consulta Exists.

Parâmetros

Parâmetro

Descrição

fieldName

Nome da coluna a ser consultada.

query

Tipo de consulta. Defina este parâmetro como ExistsQuery.

getTotalCount

Define se o número total de linhas correspondentes às condições da consulta deve ser retornado. O valor padrão é false, indicando que a contagem total não será retornada.

Definir este parâmetro como true pode comprometer o desempenho da consulta.

tableName

Nome da tabela de dados.

indexName

Nome do índice de busca.

columnsToGet

Define se todas as colunas das linhas correspondentes devem ser retornadas. Configure os campos returnAll e columns para este parâmetro.

O valor padrão do campo returnAll é false, indicando que nem todas as colunas serão retornadas. Nesse caso, use o campo columns para especificar quais colunas retornar. Sem essa especificação, apenas as colunas de chave primária serão retornadas.

Se você definir o campo returnAll como true, todas as colunas serão retornadas.

Métodos

Execute uma consulta Exists pelo console do Tablestore, pela CLI do Tablestore ou pelos SDKs do Tablestore. Antes de iniciar, certifique-se de cumprir os seguintes pré-requisitos:

Usar o console do Tablestore

  1. Acesse a aba Index Management.

    1. Faça login no console do Table Store.

    2. Na barra de navegação superior, selecione um grupo de recursos e uma região.

    3. Na página Overview, clique em nome da instância ou em Instance Management na coluna Actions.

    4. Na aba Instance Details, dentro da aba Data Table List, clique em nome da tabela de dados ou em Index Management na coluna Actions.

  2. Na aba Index Management, localize o Índice de Busca desejado e clique em Search na coluna Actions.

  3. Na caixa de diálogo Search, configure a consulta.

    1. Por padrão, todas as colunas são retornadas. Para retornar colunas específicas, desative Retrieve All Columns e insira os nomes das colunas separados por vírgulas.

      Nota

      Por padrão, o Table Store retorna as colunas de chave primária da tabela de dados.

    2. Selecione um operador lógico: And, Or ou Not.

      Ao selecionar And, a consulta retorna dados que atendem a todas as condições especificadas. Se escolher Or, a consulta retorna dados que atendem a pelo menos uma das condições. Ao optar por Not, a consulta retorna dados que não atendem às condições especificadas.

    3. Selecione um campo de índice e clique em Add.

    4. Defina o tipo de consulta para o campo de índice como Exists query (ExistsQuery).

    5. A ordenação vem desativada por padrão. Para classificar os resultados por um campo específico, ative Enable Sorting, adicione o campo de ordenação e configure a ordem de classificação.

    6. A agregação vem desativada por padrão. Para realizar uma agregação estatística em um campo específico, ative Enable Aggregation, adicione o campo para agregação e configure as definições de agregação.

  4. Clique em OK.

    Os resultados da consulta serão exibidos na aba Index Management.

Usar a CLI do Tablestore

Use a CLI do Tablestore para executar o comando search e consultar dados por meio de índices de busca. Para mais detalhes, consulte Índice de busca.

  1. Execute o comando search para usar o índice de busca search_index, consultar dados e retornar todas as colunas indexadas de cada linha que atenda às condições da consulta.

    search -n search_index --return_all_indexed
  2. Insira as condições de consulta conforme solicitado:

    {
        "Offset": -1,
        "Limit": 10,
        "Collapse": null,
        "Sort": null,
        "GetTotalCount": true,
        "Token": null,
        "Query": {
            "Name": "ExistsQuery",
            "Query": {
                "FieldName": "col_keyword"
            }
        }
    }

Usar SDKs do Tablestore

Use os seguintes SDKs do Tablestore para executar uma consulta Exists: Tablestore SDK for Java, Tablestore SDK for Go, Tablestore SDK for Python, Tablestore SDK for Node.js, Tablestore SDK for .NET e Tablestore SDK for PHP. Este exemplo utiliza o Tablestore SDK for Java.

O código de exemplo abaixo demonstra como consultar todas as linhas nas quais a coluna especificada não está vazia.

public static void existQuery(SyncClient syncClient) {
    // Query whether the col_keyword field exists. The col_keyword field is not a Nested field. 
    {
        {
            // The following sample code provides an example on how to query whether a field of a non-Nested type exists. 
            SearchQuery searchQuery = new SearchQuery();
            ExistsQuery existQuery = new ExistsQuery(); // Set the query type to ExistsQuery. 
            existQuery.setFieldName("col_keyword");
            searchQuery.setQuery(existQuery);
            SearchRequest searchRequest = new SearchRequest("<TABLE_NAME>", "<SEARCH_INDEX_NAME>", searchQuery);
            SearchResponse resp = syncClient.search(searchRequest);
        }
        {
            // Construct a builder. 
            SearchResponse resp = syncClient.search(SearchRequest.newBuilder()
                    .indexName("<SEARCH_INDEX_NAME>")
                    .tableName("<TABLE_NAME>")
                    .searchQuery(
                            SearchQuery.newBuilder()
                                    .query(QueryBuilders.exists("col_keyword"))
                                    .limit(10)
                                    .build())
                    .build());
        }
    }
    // The Nested structure is [{"keyword":"a","long":123}]. 
    {
        // Query whether the col_nested parent field exists. The col_nested field is of the Nested type. 
        {
            SearchResponse resp = syncClient.search(SearchRequest.newBuilder()
                    .indexName("<SEARCH_INDEX_NAME>")
                    .tableName("<TABLE_NAME>")
                    .searchQuery(
                            SearchQuery.newBuilder()
                                    .query(QueryBuilders.nested()
                                            .scoreMode(ScoreMode.None)
                                            .path("col_nested")
                                            .query(QueryBuilders.exists("col_nested")))
                                    .limit(10)
                                    .getTotalCount(false)
                                    .build())
                    .build());
        }
        // Query whether the col_nested.keyword field exists. The col_nested.keyword field is of the Nested type. 
        {
            SearchResponse resp = syncClient.search(SearchRequest.newBuilder()
                    .indexName("<SEARCH_INDEX_NAME>")
                    .tableName("<TABLE_NAME>")
                    .searchQuery(
                            SearchQuery.newBuilder()
                                    .query(QueryBuilders.nested()
                                            .scoreMode(ScoreMode.None)
                                            .path("col_nested")
                                            .query(QueryBuilders.exists("col_nested.keyword")))
                                    .limit(10)
                                    .getTotalCount(false)
                                    .build())
                    .build());
        }
    }
}

Faturamento

A consulta de dados por meio de um Índice de Busca consome throughput de leitura. Para mais informações, consulte Medição e faturamento do Índice de Busca.

Perguntas frequentes

Referências