Créez et gérez des index de recherche avec la CLI Tablestore pour interroger des données via des colonnes autres que la clé primaire et combiner plusieurs conditions.
Prérequis
La CLI Tablestore est installée et les identifiants d'accès sont configurés. Pour plus d'informations, consultez la rubrique CLI Tablestore.
Une table de données existe. Pour plus d'informations, consultez la rubrique Opérations sur les tables de données.
Créer un index de recherche
create_search_index -n <indexName>
|
Paramètre |
Obligatoire |
Description |
|
-i, --input |
Non |
Chemin d'accès vers un fichier JSON définissant le schéma de l'index de recherche. Si ce paramètre n'est pas spécifié, la CLI utilise une saisie interactive. |
|
-n, --name |
Oui |
Nom de l'index de recherche. |
|
-t, --table |
Non |
Nom de la table de données. Ce paramètre n'est pas requis si une table de données est déjà sélectionnée à l'aide de la commande |
|
--ttl |
Non |
Durée de conservation (TTL) des données, qui spécifie la période pendant laquelle les données sont conservées. Unité : secondes. Valeur par défaut : -1 (les données n'expirent jamais). Valeur minimale : 86400 (un jour). Les données dont la durée de conservation est dépassée sont automatiquement supprimées. Important
Pour utiliser la fonctionnalité Gestion du cycle de vie de l'index de recherche, désactivez l'opération UpdateRow pour la table de données. La TTL de l'index de recherche et celle de la table de données sont indépendantes. La TTL de l'index de recherche doit être inférieure ou égale à celle de la table de données. |
Lorsque vous y êtes invité, saisissez le schéma de l'index au format JSON, ou utilisez le paramètre -i pour spécifier un fichier de schéma. Le schéma contient les paramètres suivants :
|
Paramètre |
Obligatoire |
Description |
|
IndexSetting |
Non |
Paramètres de l'index, incluant RoutingFields. RoutingFields (facultatif) : Champs de routage personnalisés. Sélectionnez des colonnes de clé primaire comme champs de routage. Les données partageant les mêmes valeurs de champ de routage sont distribuées dans la même partition lors des opérations de lecture et d'écriture, ce qui améliore les performances des requêtes. En général, définissez un seul champ de routage. Si vous en définissez plusieurs, Tablestore concatène les valeurs en une seule. |
|
FieldSchemas |
Oui |
Liste d'objets FieldSchema. Chaque objet FieldSchema contient les champs suivants :
|
|
IndexSort |
Non |
Paramètres de pré-tri de l'index. Par défaut : trié par clé primaire. Important
Les index contenant des champs Nested ne prennent pas en charge IndexSort et ne peuvent pas être pré-triés. Sorters (facultatif) : Méthode de pré-tri. Prend en charge le tri par clé primaire (PrimaryKeySort) et par valeur de champ (FieldSort). Pour plus d'informations, consultez la rubrique Tri et pagination.
|
Exemples
Créez un index de recherche nommé search_index.
create_search_index -n search_index
Saisissez le schéma de l'index lorsque vous y êtes invité. Exemple :
{
"IndexSetting": {
"RoutingFields": null
},
"FieldSchemas": [
{
"FieldName": "gid",
"FieldType": "LONG",
"Index": true,
"EnableSortAndAgg": true,
"Store": true,
"IsArray": false,
"IsVirtualField": false
},
{
"FieldName": "col3",
"FieldType": "TEXT",
"Index": true,
"Analyzer": "single_word",
"AnalyzerParameter": {
"CaseSensitive": true,
"DelimitWord": null
},
"EnableSortAndAgg": false,
"Store": true,
"IsArray": false,
"IsVirtualField": false
}
],
"IndexSort": {
"Sorters": [
{
"Name": "PrimaryKeySort",
"Sorter": {
"Order": "ASC"
}
}
]
}
}
Créez un index de recherche à partir d'un fichier :
create_search_index -n search_index -i /tmp/indexschema.json
Répertorier les index de recherche
list_search_index
|
Paramètre |
Obligatoire |
Description |
|
-a, --all |
Non |
Répertorie les index de recherche pour toutes les tables de données. |
|
-d, --detail |
Non |
Affiche les informations détaillées sur les index de recherche. |
|
-t, --table |
Non |
Nom de la table de données. Ce paramètre n'est pas requis si une table de données est déjà sélectionnée à l'aide de la commande |
Exemples
Répertorie les index de recherche de la table de données actuelle avec les détails.
list_search_index -d
Consulter les détails d'un index de recherche
describe_search_index -n <indexName>
|
Paramètre |
Obligatoire |
Description |
|
-n, --name |
Oui |
Nom de l'index de recherche. |
|
-o, --output |
Non |
Enregistrez la sortie dans un fichier JSON ou TXT local. |
|
-t, --table |
Non |
Nom de la table de données. Ce paramètre n'est pas requis si une table de données est déjà sélectionnée avec la commande |
Exemples
Consultez les détails de l'index search_index.
describe_search_index -n search_index
Le champ Index schema de la sortie contient le schéma de l'index de recherche. Le paramètre TimeToLive indique la durée de vie (TTL) de l'index de recherche.
Interroger des données à l'aide d'un index de recherche
L'interface CLI Tablestore prend en charge les types de requête d'index de recherche suivants : Requête Term, Requête Terms, Requête Match all, Requête Match, Requête Match phrase, Requête Prefix, Requête Range, Requête Wildcard, Requête Wildcard basée sur des jetons, Requête Booléenne, Requête Geo et Requête Exists. Sélectionnez le type de requête adapté à votre cas d'utilisation.
search -n <indexName> --return_all_indexed
|
Paramètre |
Obligatoire |
Description |
|
-c, --column |
Non |
Colonnes à renvoyer. Séparez les noms de plusieurs colonnes par des virgules (,). |
|
-n, --name |
Oui |
Nom de l'index de recherche. |
|
-f, --print_format |
Non |
Format de sortie. Valeur par défaut : table. |
|
--return_all |
Non |
Renvoyez toutes les colonnes. |
|
--return_all_indexed |
Non |
Renvoyez toutes les colonnes indexées dans l'index de recherche. |
|
-t, --table |
Non |
Nom de la table de données. Ce paramètre n'est pas requis si une table de données est déjà sélectionnée avec la commande |
Lorsque vous y êtes invité, saisissez les conditions de requête au format JSON. Les conditions de requête contiennent les paramètres suivants :
|
Paramètre |
Obligatoire |
Description |
|
Offset |
Non |
Position à partir de laquelle commencer à renvoyer les résultats. |
|
Limit |
Non |
Nombre maximal de lignes à renvoyer. Pour obtenir uniquement le nombre de lignes sans renvoyer les données, définissez Limit sur 0. |
|
Collapse |
Non |
Configuration du regroupement. Utilisez ce paramètre pour regrouper (supprimer les doublons) l'ensemble des résultats selon une colonne spécifique. FieldName spécifie le nom de la colonne. Seules les colonnes de type entier, flottant et Keyword sont prises en charge. |
|
Sort |
Non |
Ordre de tri des résultats. Pour plus d'informations, consultez la section Définir au moment de la requête. Si ce paramètre n'est pas défini, les résultats sont renvoyés dans l'ordre de pré-tri. Si aucun ordre de pré-tri n'est défini, les résultats sont renvoyés dans l'ordre de la clé primaire. |
|
GetTotalCount |
Non |
Indique s'il faut renvoyer le nombre total de lignes correspondantes. Valeur par défaut : false. L'activation de cette option peut augmenter la latence des requêtes. |
|
Token |
Non |
Jeton de pagination permettant de lire les résultats restants. Lorsqu'une réponse ne contient pas toutes les lignes correspondantes, le serveur renvoie un Token. Transmettez ce Token dans la requête suivante pour poursuivre la lecture. Définissez Token sur null pour la première requête. |
|
Query |
Oui |
Type de requête. Types pris en charge : MatchAllQuery, MatchQuery, MatchPhraseQuery, TermQuery, TermsQuery, PrefixQuery, RangeQuery, WildcardQuery, ExistsQuery, NestedQuery, KnnVectorQuery et BoolQuery. |
|
Aggregations |
Non |
Configuration de l'agrégation. Prend en charge les opérations de valeur minimale, valeur maximale, somme, moyenne, comptage et comptage distinct.
|
Exemples
Interrogez les données de la table actuelle avec search_index et renvoyez toutes les colonnes indexées.
search -n search_index --return_all_indexed
Saisissez les conditions de requête comme indiqué. L'exemple suivant interroge les lignes où uid est égal à 10001 et calcule la moyenne de la colonne pid :
{
"Offset": -1,
"Limit": 10,
"Collapse": null,
"Sort": null,
"GetTotalCount": true,
"Token": null,
"Query": {
"Name": "TermQuery",
"Query": {
"FieldName": "uid",
"Term": 10001
}
},
"Aggregations": [{
"Name": "avg",
"Aggregation": {
"AggName": "agg1",
"Field": "pid"
}
}]
}
Supprimer un index de recherche
drop_search_index -n <indexName> -y
|
Paramètre |
Obligatoire |
Description |
|
-n, --name |
Oui |
Nom de l'index de recherche. |
|
-t, --table |
Non |
Nom de la table de données. Ce paramètre n'est pas requis si une table de données est déjà sélectionnée avec la commande |
|
-y, --yes |
Oui |
Confirmez la suppression. Ce paramètre est obligatoire dans la commande. |
Exemples
Supprimez l'index search_index.
drop_search_index -n search_index -y