Utilisez le SDK Tablestore pour Python afin de filtrer les données selon l'existence d'un champ indexé spécifié.
Prérequis
Installez le SDK Tablestore pour Python et initialisez un client.
Description
Une requête Exists, également appelée requête NULL, identifie les lignes dont un champ indexé spécifié existe. Un champ est considéré comme inexistant si la colonne correspondante n'a pas été écrite dans la table. Un tableau vide est également traité comme un champ inexistant. Pour interroger un champ Nested ou l'un de ses champs enfants, imbriquez ExistsQuery dans NestedQuery. Pour sélectionner les lignes où le champ n'existe pas, ajoutez ExistsQuery à BoolQuery.must_not_queries. Lors de l'appel de la méthode search, définissez le type de requête sur ExistsQuery.
ExistsQuery(field_name)
L'exemple suivant interroge les lignes dont le champ city existe et renvoie jusqu'à 10 lignes ainsi que le nombre total de lignes correspondantes.
query = ExistsQuery("city")
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 retourné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 de spécification, le délai d'expiration défini au niveau du client s'applique. |
Configuration de la requête
search_query est de type SearchQuery et comprend les éléments 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 Trier et paginer les résultats. |
|
get_total_count (facultatif) |
|
Indique s'il faut renvoyer le nombre total de lignes correspondantes. La valeur par défaut est |
|
next_token (facultatif) |
|
Jeton de pagination. Assignez à ce paramètre la valeur |
|
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 Agrégation. |
|
group_bys (facultatif) |
|
Configurations de regroupement. Pour plus d'informations, consultez Agrégation. |
|
collapse_field (facultatif) |
|
Configuration de réduction des résultats, qui élimine les doublons selon un champ spécifié. Pour plus d'informations, consultez Réduire les résultats de requête. |
Condition de requête
search_query.query est de type ExistsQuery et contient les éléments suivants.
|
Nom |
Type |
Description |
|
field_name (obligatoire) |
|
Nom du champ indexé à interroger. |
Colonnes renvoyées
columns_to_get est de type ColumnsToGet et comprend les éléments 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. Leur nombre ne dépasse pas la valeur |
|
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 |
|
Résultats de recherche, incluant des informations étendues telles que les scores de pertinence, les extraits mis 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 précédentes. Pour le nouveau code, accédez directement aux attributs de SearchResponse afin d'éviter les erreurs de déballage si des champs de réponse sont ajoutés à l'avenir.
(
rows,
next_token,
total_count,
is_all_succeed,
agg_results,
group_by_results,
search_hits,
) = response.v1_response()