Utilisez le SDK Tablestore pour Python pour exécuter une requête de plage sur un index de recherche et filtrer les données selon les limites des valeurs de champ, en contrôlant l'inclusion ou non de chaque limite.
Prérequis
Installez le SDK Tablestore pour Python et initialisez un client.
Description
Une requête de plage sur un index de recherche renvoie les lignes dont les valeurs de champ se situent dans une plage spécifiée. Vous pouvez spécifier uniquement une limite inférieure, uniquement une limite supérieure, ou les deux, mais au moins une limite est requise. Pour un champ Text, une ligne correspond si l'un de ses jetons se trouve dans la plage. Lors de l'appel à la méthode search, définissez le type de requête sur RangeQuery.
RangeQuery(field_name, range_from=None, range_to=None, include_lower=True, include_upper=False)
L'exemple suivant interroge les lignes dont le champ price se situe dans la plage fermée à gauche et ouverte à droite [100, 500) et renvoie jusqu'à 10 lignes ainsi que le nombre total de lignes correspondantes.
query = RangeQuery(
"price",
range_from=100,
range_to=500,
include_lower=True,
include_upper=False,
)
search_query = SearchQuery(
query,
limit=10,
get_total_count=True,
)
response = client.search(
"example_table",
"example_index",
search_query,
ColumnsToGet(return_type=ColumnReturnType.ALL),
)
print(response.total_count)
for row in response.rows:
print(row)
Paramètres
Requête de recherche
La méthode search accepte les paramètres suivants.
|
Nom |
Type |
Description |
|
table_name (obligatoire) |
|
Nom de la table de données. |
|
index_name (obligatoire) |
|
Nom de l'index de recherche. |
|
search_query (obligatoire) |
|
Condition de requête et configurations courantes. |
|
columns_to_get (facultatif) |
|
Configuration des colonnes à renvoyer. Si ce paramètre est omis, seules les colonnes de clé primaire sont renvoyées. |
|
routing_keys (facultatif) |
|
Liste des valeurs de clé primaire pour les champs de routage personnalisé. Ce paramètre est inutile si le routage personnalisé n'est pas configuré. |
|
timeout_s (facultatif) |
|
Délai d'expiration de la requête en secondes. À défaut, le délai d'expiration 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) |
|
Condition de requête. Définissez ce paramètre sur |
|
sort (facultatif) |
|
Ordre de tri des résultats. Pour plus d'informations, consultez la rubrique Tri et pagination des résultats. |
|
get_total_count (facultatif) |
|
Indique s'il faut renvoyer le nombre total de lignes correspondantes. Valeur par défaut : |
|
next_token (facultatif) |
|
Jeton de pagination. Définissez ce paramètre sur le |
|
offset (facultatif) |
|
Décalage de départ de la requête actuelle. Utilisez ce paramètre pour une pagination superficielle. |
|
limit (facultatif) |
|
Nombre maximal de lignes à renvoyer. Si ce paramètre est défini sur |
|
aggs (facultatif) |
|
Configurations d'agrégation. Pour plus d'informations, consultez la rubrique Agrégation. |
|
group_bys (facultatif) |
|
Configurations de regroupement. Pour plus d'informations, consultez la rubrique Agrégation. |
|
collapse_field (facultatif) |
|
Configuration de réduction des résultats, qui supprime les doublons en fonction d'un champ spécifié. Pour plus d'informations, consultez la rubrique Réduction des résultats de requête. |
|
highlight (facultatif) |
|
Configuration de résumé et de mise en surbrillance pour les champs |
Condition de requête
Le paramètre search_query.query est de type RangeQuery et accepte les paramètres suivants.
|
Nom |
Type |
Description |
|
field_name (obligatoire) |
|
Nom du champ indexé à interroger. Les requêtes de plage prennent en charge les champs |
|
range_from (facultatif) |
|
Limite inférieure. Vous devez spécifier au moins l'un des paramètres |
|
range_to (facultatif) |
|
Limite supérieure. Vous devez spécifier au moins l'un des paramètres |
|
include_lower (facultatif) |
|
Indique s'il faut inclure la limite inférieure. Valeur par défaut : |
|
include_upper (facultatif) |
|
Indique s'il faut inclure la limite supérieure. Valeur par défaut : |
Colonnes à renvoyer
Le paramètre columns_to_get est de type ColumnsToGet et accepte les paramètres suivants.
|
Nom |
Type |
Description |
|
column_names (facultatif) |
|
Noms des colonnes d'attribut à renvoyer. Spécifiez ce paramètre uniquement lorsque |
|
return_type (facultatif) |
|
Mode de retour des colonnes. |
Réponse
La méthode search renvoie un objet SearchResponse. Le tableau suivant décrit les champs principaux.
|
Champ |
Type |
Description |
|
rows |
|
Lignes renvoyées par la requête actuelle. Le nombre de lignes ne dépasse pas la valeur de |
|
next_token |
|
Jeton pour la page suivante. Si ce champ n'est pas vide, transmettez-le à la requête suivante pour poursuivre la lecture. |
|
total_count |
|
Nombre de lignes correspondantes. La valeur dépend de la configuration |
|
is_all_succeed |
|
Indique si toutes les partitions d'index ont été interrogées. Si la valeur est |
|
agg_results |
|
Résultats d'agrégation. Ce champ est vide si |
|
group_by_results |
|
Résultats de regroupement. Ce champ est vide si |
|
search_hits |
|
Occurrences de recherche, incluant des informations étendues telles que les scores de pertinence, les mises en surbrillance et les lignes enfants correspondantes. |
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 les versions 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 de 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()