Tous les produits
Search
Centre de documentation

Tablestore:Boolean query

Dernière mise à jour :Aug 08, 2026

Utilisez le SDK Tablestore pour Python afin de combiner plusieurs conditions de recherche à l'aide des opérateurs logiques ET, OU et NON.

Prérequis

Installez le SDK Tablestore pour Python et initialisez un client.

Description

Une requête booléenne utilise BoolQuery pour combiner plusieurs sous-requêtes en une condition complexe. Une sous-requête peut être de n'importe quel type ou une autre BoolQuery. Les paramètres must_queries et filter_queries représentent l'opérateur ET (AND), should_queries représente l'opérateur OU (OR) et must_not_queries représente l'opérateur NON (NOT). Les paramètres filter_queries et must_not_queries n'influencent pas le score de pertinence.

Si minimum_should_match n'est pas spécifié, should_queries est facultatif lorsque must_queries ou filter_queries existe au même niveau. Dans les autres cas contenant should_queries, au moins une sous-requête should_queries doit correspondre par défaut.

BoolQuery(
    must_queries=None,
    must_not_queries=None,
    filter_queries=None,
    should_queries=None,
    minimum_should_match=None,
    weight=None,
)

L'exemple suivant interroge les lignes où city est égal à hangzhou et category est égal à book.

query = BoolQuery(
    must_queries=[
        TermQuery("city", "hangzhou"),
        TermQuery("category", "book"),
    ]
)
response = client.search(
    "example_table",
    "example_index",
    SearchQuery(query, limit=10, get_total_count=True),
    ColumnsToGet(return_type=ColumnReturnType.ALL),
)
print(response.rows)

Paramètres

Requête de recherche

La méthode search accepte les paramètres suivants.

Nom

Type

Description

table_name (obligatoire)

str

Nom de la table de données.

index_name (obligatoire)

str

Nom de l'index de recherche.

search_query (obligatoire)

SearchQuery

Condition de recherche et configurations courantes de la requête.

columns_to_get (facultatif)

ColumnsToGet

Configuration des colonnes à renvoyer. Si ce paramètre est omis, seules les colonnes de clé primaire sont renvoyées.

routing_keys (facultatif)

list

Valeurs de clé primaire des champs de routage personnalisés. Ce paramètre est inutile si le routage personnalisé n'est pas configuré.

timeout_s (facultatif)

int

Délai d'expiration de la requête en secondes. À défaut, le délai d'expiration configuré au niveau du client s'applique.

Configuration de la requête

Le paramètre search_query est de type SearchQuery et accepte les paramètres suivants.

Nom

Type

Description

query (obligatoire)

Query

Condition de recherche. Définissez ce paramètre sur BoolQuery.

sort (facultatif)

Sort

Ordre de tri des résultats. Pour plus d'informations, consultez la rubrique Tri et pagination des résultats.

get_total_count (facultatif)

bool

Indique s'il faut renvoyer le nombre total de lignes correspondantes. Valeur par défaut : False. Définir ce paramètre sur True augmente la charge de la requête.

next_token (facultatif)

bytes

Jeton de pagination. Transmettez next_token issu de la réponse précédente pour récupérer la page suivante.

offset (facultatif)

int

Décalage à partir duquel la requête commence. Utilisez ce paramètre pour une pagination superficielle.

limit (facultatif)

int

Nombre maximal de lignes à renvoyer. Si ce paramètre est défini sur 0, aucune ligne n'est renvoyée.

aggs (facultatif)

list[Agg]

Configurations d'agrégation de métriques. Pour plus d'informations, consultez la rubrique Agrégation.

group_bys (facultatif)

list[BaseGroupBy]

Configurations de regroupement. Pour plus d'informations, consultez la rubrique Agrégation.

collapse_field (facultatif)

Collapse

Configuration de la réduction des résultats. Pour plus d'informations, consultez la rubrique Réduction des résultats de recherche.

highlight (facultatif)

Highlight

Configuration du résumé et de la mise en surbrillance pour les champs Text. Pour plus d'informations, consultez la rubrique Résumé et mise en surbrillance.

Condition de requête booléenne

Le paramètre search_query.query est de type BoolQuery et accepte les paramètres suivants.

Nom

Type

Description

must_queries (facultatif)

list[Query]

Sous-requêtes qui doivent toutes correspondre. Les sous-requêtes correspondantes contribuent au score de pertinence.

filter_queries (facultatif)

list[Query]

Sous-requêtes qui doivent toutes correspondre mais ne contribuent pas au score de pertinence.

should_queries (facultatif)

list[Query]

Sous-requêtes dont un nombre minimal spécifié doit correspondre. Le fait que davantage de conditions correspondent augmente le score de pertinence.

must_not_queries (facultatif)

list[Query]

Sous-requêtes qui ne doivent pas correspondre. Elles ne contribuent pas au score de pertinence.

minimum_should_match (facultatif)

int

Nombre minimal de sous-requêtes should_queries qui doivent correspondre.

weight (facultatif)

float

Poids de la requête, qui doit être un nombre à virgule flottante positif. Valeur par défaut : 1.0. Ce paramètre affecte les scores de pertinence mais pas la correspondance.

Colonnes renvoyées

Le paramètre columns_to_get est de type ColumnsToGet et accepte les paramètres suivants.

Nom

Type

Description

column_names (facultatif)

list[str]

Noms des colonnes d'attribut à renvoyer. Spécifiez ce paramètre uniquement lorsque return_type est défini sur SPECIFIED.

return_type (facultatif)

ColumnReturnType

Mode de renvoi des colonnes. NONE (par défaut) renvoie uniquement les colonnes de clé primaire ; SPECIFIED renvoie les colonnes d'attribut spécifiées ; ALL renvoie toutes les colonnes d'attribut de la table ; et ALL_FROM_INDEX renvoie tous les champs stockés dans l'index.

Réponse

La méthode search renvoie un objet SearchResponse. Le tableau suivant décrit les champs principaux.

Champ

Type

Description

rows

list[Row]

Lignes renvoyées par la requête. Le nombre ne dépasse pas limit.

next_token

bytes

Jeton pour la page suivante. Une valeur vide indique qu'aucune autre donnée n'est disponible.

total_count

int

Nombre de lignes correspondantes. La valeur dépend de get_total_count.

is_all_succeed

bool

Indique si toutes les partitions d'index ont été interrogées. Si la valeur est False, des résultats partiels sont renvoyés.

agg_results

list[AggResult]

Résultats de l'agrégation de métriques. Ce champ est vide si aggs n'est pas configuré.

group_by_results

list[GroupByResult]

Résultats du regroupement. Ce champ est vide si group_bys n'est pas configuré.

search_hits

list[SearchHit]

Résultats de recherche, incluant des informations étendues telles que les lignes, les scores de pertinence et les mises en surbrillance.

Réponse compatible avec les tuples

À partir de la version 5.2.0 du SDK Tablestore pour Python, les API de recherche renvoient des objets de réponse au lieu de tuples. Les versions 5.1.0 et antérieures renvoient directement des tuples. Dans la version 5.2.1 et ultérieures, vous pouvez appeler SearchResponse.v1_response() pour obtenir un tuple compatible avec les versions antérieures. Pour le nouveau code, accédez directement aux attributs SearchResponse afin d'éviter les erreurs de déballage si les champs de réponse sont étendus.

(
    rows,
    next_token,
    total_count,
    is_all_succeed,
    agg_results,
    group_by_results,
    search_hits,
) = response.v1_response()

Exemples

Combiner les conditions OU, NON et filtre

L'exemple suivant exige que les lignes appartiennent à une catégorie commençant par book-, correspondent à au moins l'une des catégories Python ou Java et n'aient pas le statut deprecated.

query = BoolQuery(
    filter_queries=[PrefixQuery("category", "book-")],
    should_queries=[
        TermQuery("category", "book-python"),
        TermQuery("category", "book-java"),
    ],
    must_not_queries=[TermQuery("status", "deprecated")],
    minimum_should_match=1,
)
response = client.search(
    "example_table",
    "example_index",
    SearchQuery(query, limit=10),
)
print(response.rows)