Todos os produtos
Search
Central de documentação

Tablestore:Consulta booleana

Última atualização: Jul 03, 2026

Uma consulta booleana recupera dados da tabela com base em uma combinação de subconsultas. O Tablestore retorna as linhas correspondentes às subconsultas. Uma subconsulta pode ser de qualquer tipo, inclusive outra consulta booleana.

Pré-requisitos

Parâmetros

Parâmetro

Descrição

must_queries

Lista de subconsultas. Retorna apenas as linhas que atendem a todas as condições das subconsultas. Equivale ao operador AND.

must_not_queries

Lista de subconsultas. Retorna apenas as linhas que não atendem a nenhuma condição das subconsultas. Equivale ao operador NOT.

filter_queries

Lista de subconsultas. Retorna apenas as linhas correspondentes a todos os subfiltros. Um filtro assemelha-se a uma consulta, mas não calcula a pontuação de relevância com base no número de subfiltros correspondidos pela linha.

should_queries

Lista de subconsultas opcionais para os resultados. Equivale ao operador OR.

Retorna apenas as linhas que atendem ao número mínimo de condições de subconsulta especificado por should_queries.

Uma pontuação geral de relevância mais alta indica que mais condições de subconsulta especificadas pelo parâmetro should_queries foram atendidas.

minimum_should_match

Número mínimo de condições de subconsulta especificadas pelo parâmetro should_queries que as linhas retornadas devem atender. Se apenas o parâmetro should_queries definir as condições de subconsulta, o valor padrão de minimum_should_match será 1. Se um ou mais dos parâmetros must_queries, must_not_queries e filter_queries também definirem condições de subconsulta, o valor padrão de minimum_should_match será 0.

table_name

Nome da tabela de dados.

index_name

Nome do índice de pesquisa.

Exemplos

Os exemplos de código a seguir demonstram como executar consultas booleanas.

  • Tablestore SDK for Python V5.2.1 ou posterior

    Por padrão, ao usar o Tablestore SDK for Python V5.2.1 ou posterior para executar uma consulta booleana, o sistema retorna um objeto SearchResponse. O código a seguir mostra um exemplo de solicitação:

    # Col_Keyword > 'key100' and (Col_Long > 110 and Col_Long < 200) and not (Col_Keyword = 'key121') and
    # should_queries(Col_Keyword > 'key120' or Col_Long < 300, minimum_should_match = 2)
    bool_query = BoolQuery(
        must_queries=[
            RangeQuery('Col_Keyword', range_from='key100', include_lower=False),
            # Use BoolQuery. 
            BoolQuery(
                # Set subqueries to obtain data that meets all filtering conditions. 
                must_queries=[
                    RangeQuery('Col_Long', range_from=110, include_lower=False),
                    RangeQuery('Col_Long', range_to=200, include_upper=False)
                ],
            )
        ],
        # Set subqueries to exclude data that meets all filtering conditions. 
        must_not_queries=[
            TermQuery('Col_Keyword', 'key121')
        ],
        should_queries=[
            RangeQuery('Col_Keyword', range_from='key120', include_lower=False),
            RangeQuery('Col_Long', range_to=300, include_upper=130)
        ],
        minimum_should_match=2
    )
    # Construct a Boolean query by specifying query parameters, including sort, limit, and get_total_count. 
    search_response = client.search(
        '<TABLE_NAME>', '<SEARCH_INDEX_NAME>',
        SearchQuery(
            bool_query,
            sort=Sort(sorters=[FieldSort('Col_Long', SortOrder.ASC)]),
            limit=100,
            get_total_count=True),
        ColumnsToGet(return_type=ColumnReturnType.ALL)
    )
    print('request_id : %s' % search_response.request_id)
    print('is_all_succeed : %s' % search_response.is_all_succeed)
    print('total_count : %s' % search_response.total_count)
    print('rows : %s' % search_response.rows)

    Use o exemplo de solicitação a seguir para retornar resultados do tipo Tuple:

    # Col_Keyword > 'key100' and (Col_Long > 110 and Col_Long < 200) and not (Col_Keyword = 'key121') and 
    # should_queries(Col_Keyword > 'key120' or Col_Long < 300, minimum_should_match = 2) 
    bool_query = BoolQuery(
        must_queries=[
            RangeQuery('Col_Keyword', range_from='key100', include_lower=False),
            # Use BoolQuery. 
            BoolQuery(
                # Set subqueries to obtain data that meets all filtering conditions. 
                must_queries=[
                    RangeQuery('Col_Long', range_from=110, include_lower=False),
                    RangeQuery('Col_Long', range_to=200, include_upper=False)
                ],
            )
        ],
        # Set subqueries to exclude data that meets all filtering conditions. 
        must_not_queries=[
            TermQuery('Col_Keyword', 'key121')
        ],
        should_queries=[
            RangeQuery('Col_Keyword', range_from='key120', include_lower=False),
            RangeQuery('Col_Long', range_to=300, include_upper=130)
        ],
        minimum_should_match=2
    )
    # Construct a Boolean query by specifying query parameters, including sort, limit, and get_total_count. 
    rows, next_token, total_count, is_all_succeed, agg_results, group_by_results = client.search(
        '<TABLE_NAME>', '<SEARCH_INDEX_NAME>',
        SearchQuery(
            bool_query,
            sort=Sort(sorters=[FieldSort('Col_Long', SortOrder.ASC)]),
            limit=100,
            get_total_count=True),
        ColumnsToGet(return_type=ColumnReturnType.ALL)
    ).v1_response()
  • Tablestore SDK for Python anterior à versão 5.2.1

    Ao usar uma versão do Tablestore SDK for Python anterior à 5.2.1 para executar uma consulta booleana, o sistema retorna resultados do tipo Tuple por padrão. O código a seguir mostra um exemplo de solicitação:

    # Col_Keyword > 'key100' and (Col_Long > 110 and Col_Long < 200) and not (Col_Keyword = 'key121') and 
    # should_queries(Col_Keyword > 'key120' or Col_Long < 300, minimum_should_match = 2) 
    bool_query = BoolQuery(
        must_queries=[
            RangeQuery('Col_Keyword', range_from='key100', include_lower=False),
            # Use BoolQuery. 
            BoolQuery(
                # Set subqueries to obtain data that meets all filtering conditions. 
                must_queries=[
                    RangeQuery('Col_Long', range_from=110, include_lower=False),
                    RangeQuery('Col_Long', range_to=200, include_upper=False)
                ],
            )
        ],
        # Set subqueries to exclude data that meets all filtering conditions. 
        must_not_queries=[
            TermQuery('Col_Keyword', 'key121')
        ],
        should_queries=[
            RangeQuery('Col_Keyword', range_from='key120', include_lower=False),
            RangeQuery('Col_Long', range_to=300, include_upper=130)
        ],
        minimum_should_match=2
    )
    # Construct a Boolean query by specifying query parameters, including sort, limit, and get_total_count. 
    rows, next_token, total_count, is_all_succeed = client.search(
        '<TABLE_NAME>', '<SEARCH_INDEX_NAME>',
        SearchQuery(
            bool_query,
            sort=Sort(sorters=[FieldSort('Col_Long', SortOrder.ASC)]),
            limit=100,
            get_total_count=True),
        ColumnsToGet(return_type=ColumnReturnType.ALL)
    )

Perguntas frequentes

Referências