Todos os produtos
Search
Central de documentação

Tablestore:Use post-query filters

Última atualização: Jul 28, 2026

Use filtros pós-consulta com o Tablestore SDK for Java para refinar os resultados de uma consulta principal e separar condições adequadas para execução posterior.

Pré-requisitos

  • Instale o Tablestore SDK for Java e inicialize o cliente.

  • Use a versão 5.17.5 ou superior do Tablestore SDK for Java.

Funcionamento

Um filtro pós-consulta (SearchFilter) filtra as linhas candidatas após a execução da consulta principal (query). Em seguida, o sistema calcula agregações e agrupamentos com base nos resultados filtrados. Separar condições apropriadas para execução tardia da consulta principal reduz o custo de avaliação de condições complexas durante essa etapa. O benefício real de desempenho depende da seletividade da consulta principal e da condição de filtro.

Para usar um filtro pós-consulta, chame search e configure a consulta principal e o SearchFilter separadamente no objeto SearchQuery. A consulta principal aceita os tipos de consulta fornecidos pelos índices de busca. O filtro pós-consulta aceita apenas tipos específicos de consulta e de campo. Para mais informações, consulte Limits.

SearchResponse search(SearchRequest request)

O exemplo abaixo usa primeiro TermsQuery para buscar linhas em que o valor do campo category seja book. Depois, aplica um filtro pós-consulta para reter apenas as linhas cujo valor do campo score_long seja maior que 1 e menor que 10.

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

// Configure the main query.
TermsQuery termsQuery = new TermsQuery();
termsQuery.setFieldName("category");
termsQuery.addTerm(ColumnValue.fromString("book"));

// Configure the post-query filter.
RangeQuery rangeQuery = new RangeQuery();
rangeQuery.setFieldName("score_long");
rangeQuery.setFrom(ColumnValue.fromLong(1));
rangeQuery.setIncludeLower(false);
rangeQuery.setTo(ColumnValue.fromLong(10));
rangeQuery.setIncludeUpper(false);

SearchFilter searchFilter = new SearchFilter();
searchFilter.setQuery(rangeQuery);

SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(termsQuery);
searchQuery.setFilter(searchFilter);
searchQuery.setTrackTotalCount(SearchQuery.TRACK_TOTAL_COUNT);

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

SearchResponse response = client.search(request);
System.out.println("Total count: " + response.getTotalCount());
System.out.println("Rows: " + response.getRows());

Limites

  • Use o filtro pós-consulta sempre junto com uma consulta principal. Configure a consulta principal para reduzir o número de linhas candidatas antes da execução do filtro. Evite definir a consulta principal como MatchAllQuery, exceto quando for necessário filtrar todas as linhas do índice de busca.

  • O filtro pós-consulta aceita somente TermQuery, TermsQuery, RangeQuery, ExistsQuery e condições BoolQuery compostas por esses tipos de consulta.

  • Em um BoolQuery usado como filtro pós-consulta, há suporte apenas para mustQueries, mustNotQueries e shouldQueries. Não há suporte para filterQueries.

  • Apenas campos dos tipos Keyword, Long e Double podem ser filtrados. Além disso, ative enableSortAndAgg para esses campos.

  • As condições do filtro pós-consulta não participam da pontuação de relevância. Definir weight para uma condição de filtro não altera as pontuações de relevância dos resultados da consulta.

Parâmetros

Solicitação de busca

request é um objeto SearchRequest que contém os seguintes parâmetros.

Nome

Tipo

Descrição

tableName (obrigatório)

String

Nome da tabela.

indexName (obrigatório)

String

Nome do índice de busca.

searchQuery (obrigatório)

SearchQuery

Consulta principal, filtro pós-consulta e configurações gerais de consulta.

columnsToGet (opcional)

SearchRequest.ColumnsToGet

Colunas a retornar. Se este parâmetro não for especificado, apenas as colunas de chave primária serão retornadas.

timeoutInMillisecond (opcional)

int

Tempo limite da consulta no nível da solicitação, em milissegundos. O valor padrão é -1, indicando que nenhum tempo limite foi definido no nível da solicitação.

routingValues (opcional)

List<PrimaryKey>

Valores de chave primária de um campo de roteamento personalizado. Não configure este parâmetro se o roteamento personalizado não estiver em uso.

Configurações de consulta

request.searchQuery é um objeto SearchQuery que contém os seguintes parâmetros.

Nome

Tipo

Descrição

query (obrigatório)

Query

Condição da consulta principal. Tipos de consulta de índice de busca são aceitos.

filter (obrigatório)

SearchFilter

Filtro pós-consulta que refina as linhas candidatas após a execução da consulta principal.

offset (opcional)

Integer

Deslocamento inicial para a consulta.

limit (opcional)

Integer

Número máximo de linhas a retornar. Se você definir este parâmetro como 0, nenhuma linha será retornada.

highlight (opcional)

Highlight

Configurações de resumo e destaque para campos Text. Para detalhes de configuração, consulte Summary and highlighting.

collapse (opcional)

Collapse

Configurações de colapso de campo usadas para deduplicar resultados de consulta por um campo específico. Para detalhes de configuração, consulte Collapse query results.

sort (opcional)

Sort

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

trackTotalCount (opcional)

int

Número máximo de linhas correspondentes a contar. O valor padrão é TRACK_TOTAL_COUNT_DISABLED, indicando que as linhas correspondentes não são contadas. Defina este parâmetro como TRACK_TOTAL_COUNT para contar todas as linhas correspondentes. Um valor menor proporciona melhor desempenho na consulta.

aggregationList (opcional)

List<Aggregation>

Configurações de agregação. As agregações são calculadas a partir dos resultados do filtro pós-consulta. Para detalhes de configuração, consulte Aggregation.

groupByList (opcional)

List<GroupBy>

Configurações de agrupamento. Os agrupamentos são calculados a partir dos resultados do filtro pós-consulta. Para detalhes de configuração, consulte Aggregation.

token (opcional)

byte[]

Token de paginação. Para ler a próxima página, defina este parâmetro com o valor nextToken retornado pela solicitação anterior. Quando token está definido, o SDK limpa sort, pois o token de paginação já contém a condição de ordenação.

Filtro pós-consulta

request.searchQuery.filter é um objeto SearchFilter que contém o seguinte parâmetro.

Nome

Tipo

Descrição

query (obrigatório)

Query

Condição do filtro. Há suporte para TermQuery, TermsQuery, RangeQuery, ExistsQuery e condições BoolQuery compostas por esses tipos de consulta.

Colunas retornadas

request.columnsToGet é um objeto SearchRequest.ColumnsToGet que contém os seguintes parâmetros.

Nome

Tipo

Descrição

columns (opcional)

List<String>

Colunas de atributo a retornar. Configure este parâmetro apenas se returnAll e returnAllFromIndex forem ambos false. Caso não seja especificado, apenas as colunas de chave primária serão retornadas.

returnAll (opcional)

boolean

Indica se todas as colunas de atributo da tabela devem ser retornadas. Valor padrão: false.

returnAllFromIndex (opcional)

boolean

Indica se todas as colunas de atributo indexadas devem ser retornadas. Valor padrão: false. Este parâmetro e returnAll não podem ser definidos como true simultaneamente.

Resposta

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

Nome

Tipo

Descrição

totalCount

long

Quantidade de linhas que correspondem ao filtro pós-consulta, obtida por meio de getTotalCount(). O valor depende da configuração de trackTotalCount.

rows

List<Row>

Linhas retornadas pela solicitação atual, obtidas por meio de getRows(). A quantidade de linhas não excede limit.

searchHits

List<SearchHit>

Resultados da busca, obtidos por meio de getSearchHits().

aggregationResults

AggregationResults

Resultados das agregações calculados a partir dos dados filtrados pelo filtro pós-consulta, obtidos por meio de getAggregationResults().

groupByResults

GroupByResults

Resultados dos agrupamentos calculados a partir dos dados filtrados pelo filtro pós-consulta, obtidos por meio de getGroupByResults().

nextToken

byte[]

Token para a próxima página, obtido por meio de getNextToken(). Se o valor não for null, use-o como token na próxima solicitação.

isAllSuccess

boolean

Indica se todas as partições do índice foram consultadas, obtido por meio de isAllSuccess(). Se o valor for false, resultados parciais são retornados e totalCount pode ser inferior ao número real de linhas correspondentes.