Tous les produits
Search
Centre de documentation

Tablestore:Search index

Dernière mise à jour :Aug 26, 2026

Un index de recherche s'appuie sur des index inversés et des stockages en colonnes pour permettre des requêtes multidimensionnelles ainsi que des analyses statistiques sur les big data. Utilisez les index de recherche pour interroger des colonnes autres que la clé primaire, effectuer des requêtes booléennes ou floues, réaliser une recherche en texte intégral, exécuter une recherche vectorielle et appliquer des agrégations telles que max, min, count et group by.

Contexte

Les index de recherche s'appliquent uniquement aux modèles de table large .

Les index de recherche, les bases de données et les moteurs de recherche répondent tous à des problématiques de requêtes complexes sur les big data, mais présentent les différences suivantes :

À l'exception des jointures, des transactions et de l'analyse de pertinence, Tablestore propose les fonctionnalités des bases de données et des systèmes de recherche. Il combine la fiabilité élevée des données d'une base de données avec les capacités de requête avancées d'un système de recherche, remplaçant ainsi l'architecture classique database + search engine.

Si votre scénario n'implique ni jointures, ni transactions, ni analyse complexe de pertinence, utilisez un index de recherche Tablestore.

表格存储与数据库及搜索系统的主要的区别

Présentation des index

Un index de recherche utilise des index inversés et des stockages en colonnes pour résoudre les problèmes de requêtes multidimensionnelles et d'analyses statistiques sur les big data. Il prend en charge les requêtes sur les colonnes autres que la clé primaire, les requêtes par préfixe, les requêtes floues, les requêtes booléennes, les requêtes imbriquées, les requêtes géospatiales, la recherche en texte intégral, la recherche vectorielle et l'agrégation statistique (max, min, count, sum, avg, distinct_count, group_by, percentiles et histogram).

La figure suivante illustre les structures d'index inversé, de stockage en colonne et d'index spatial multidimensionnel utilisées par un index de recherche.

image.png

Contrairement aux index de base de données traditionnels (comme MySQL), un index de recherche n'est pas limité par la règle de correspondance du préfixe le plus à gauche. Dans la plupart des cas, un seul index de recherche par table suffit. Par exemple, une table d'étudiants comportant des colonnes telles que le nom, l'identifiant étudiant, le sexe, la note, la classe et l'adresse domicile ne nécessite qu'un seul index de recherche pour prendre en charge des requêtes combinées comme students named John Doe in the third grade, male students whose home address is within 1 km ou students in Class 2 of Grade 3 who live in a specific residential area.

Comparaison des index

Tablestore permet d'interroger les tables de données par clé primaire et propose deux types d'index pour accélérer les requêtes : l'index secondaire et l'index de recherche. Le tableau suivant compare ces trois méthodes de requête.

Méthode de requête

Principe

Scénario

Clé primaire

Une table de données fonctionne comme une grande carte. Vous ne pouvez interroger les données que par clé primaire.

Convient aux scénarios où vous connaissez la clé primaire complète ou un préfixe de clé.

Index secondaire

Crée des tables d'index dont les colonnes de clé primaire étendent la capacité de requête de la table de données à différentes colonnes.

Convient aux scénarios où les colonnes de requête sont prédéterminées, le nombre de colonnes est faible et vous connaissez la clé primaire complète ou un préfixe de clé.

Index de recherche

Utilise des structures telles que les index inversés, les arbres BKD et les stockages en colonnes pour offrir des capacités de requête riches.

Convient à tous les scénarios de requête et d'analyse au-delà de la couverture de la clé primaire et de l'index secondaire : requêtes sur les colonnes autres que la clé primaire, requêtes booléennes sur n'importe quelle colonne, requêtes relationnelles, recherche en texte intégral, requêtes géospatiales, requêtes floues, requêtes imbriquées, requêtes sur les valeurs NULL et agrégation statistique.

Scénarios

Les index de recherche sont largement utilisés pour l'interrogation et l'analyse des données dans les systèmes applicatifs. Le tableau suivant répertorie les scénarios courants.

Système applicatif

Exemple de scénario

Plateforme e-commerce

Mettez en œuvre la catégorisation des produits et le filtrage par attributs pour aider les utilisateurs à rechercher et filtrer rapidement les produits.

Application sociale

Interrogez les relations de suivi et d'amitié entre utilisateurs, ou recommandez et associez des utilisateurs en fonction de tags d'intérêt.

Analyse des journaux

Effectuez des recherches par mot-clé et des requêtes par plage de temps pour localiser rapidement les problèmes et analyser les données de journal.

Analytique des données IoT

Interrogez et analysez les données des appareils. Par exemple, filtrez et comptez les données par type d'appareil ou par emplacement géographique.

Surveillance des performances des applications

Aggrégez et interrogez les données de métriques. Par exemple, filtrez et résumez les données par plage horaire ou par nom d'application.

Service basé sur la localisation

Effectuez des requêtes géospatiales et des recherches à proximité pour fournir des informations sur les commerces, attractions et services voisins.

Moteur de recherche textuelle

Effectuez une recherche en texte intégral et un tri par pertinence pour trouver rapidement des documents, articles et autres contenus.

Fonctionnalités

Liste des fonctionnalités

Le tableau suivant répertorie les fonctionnalités des index de recherche.

Fonctionnalité

Description

Documentation

Requête sur n'importe quelle colonne (y compris les colonnes de clé primaire et non-clé primaire)

Interrogez les données par n'importe quelle colonne. Convient à la plupart des scénarios de requête.

Si les requêtes par clé primaire ou par préfixe ne suffisent pas, créez un index de recherche avec les champs cibles et interrogez par valeurs de colonne.

Toute requête d'index de recherche, telle qu'une requête de base

Requête booléenne

Combinez plusieurs champs pour un filtrage efficace. Convient aux systèmes de commande, à l'analyse des journaux et aux personas utilisateurs.

Dans une base de données relationnelle, une table comportant des dizaines de champs peut nécessiter des centaines d'index pour couvrir toutes les combinaisons de champs. L'absence de certaines combinaisons entraîne des requêtes inefficaces.

Avec Tablestore, un seul index de recherche couvre toutes les combinaisons de champs. Ajoutez les champs susceptibles d'être interrogés à l'index, puis combinez-les librement à l'aide de la logique And, Or et Not.

Requête booléenne

Requête géospatiale

Les appareils mobiles ont accru la valeur des données de localisation géographique. Les applications de réseautage social, de livraison de repas, de sport et l'Internet des véhicules (IoV) nécessitent tous des requêtes conscientes de la localisation.

Les index de recherche prennent en charge les fonctionnalités de requête géospatiale suivantes :

  • Proximité : Interrogez les points situés à une distance spécifiée d'une origine. Exemple : la fonctionnalité « Personnes à proximité » dans les médias sociaux.

  • Dans une zone : Interrogez les points situés dans une zone rectangulaire ou polygonale.

Si votre application nécessite des requêtes basées sur la localisation, un index de recherche Tablestore offre une solution complète sans bases de données ou systèmes de recherche supplémentaires.

Index en texte intégral

Trouvez des données contenant une phrase spécifiée. Convient à l'analytique des big data, à la recherche de contenu, à la gestion des connaissances, à l'analyse des médias sociaux, à l'analyse des journaux, aux systèmes de chat IA, aux audits de conformité et aux recommandations personnalisées.

Les index de recherche utilisent la tokenisation pour la recherche en texte intégral. Ils fournissent une pertinence BM25 de base mais pas de pertinence personnalisée. Pour des besoins complexes de recherche par pertinence, utilisez un système de recherche dédié ; sinon, un index de recherche suffit.

Cinq types de tokenisation sont disponibles : mot unique, délimiteur, sémantique minimale, sémantique maximale et floue. Pour mettre en évidence les mots-clés dans les résultats, utilisez la fonctionnalité de résumé et de mise en surbrillance.

Recherche vectorielle

Les index de recherche prennent en charge la recherche vectorielle pour des requêtes efficaces de plus proches voisins approximatifs sur des ensembles de données à grande échelle. Convient à la génération augmentée par récupération (RAG), aux systèmes de recommandation, à la détection de similarité (images, vidéos et parole) et au traitement du langage naturel.

AISearch

Requête floue

Les index de recherche proposent des requêtes avec caractères génériques, par préfixe et par suffixe pour la correspondance floue dans différents scénarios.

  • Requête avec caractères génériques : Similaire à la syntaxe like des bases de données relationnelles. Prend en charge deux caractères génériques : l'astérisque (*) et le point d'interrogation (?).

    Pour les modèles word, utilisez une requête avec caractères génériques basée sur la tokenisation (tokenisation floue combinée à une requête de correspondance de phrase) pour de meilleures performances.

  • Requête par préfixe : Fait correspondre le contenu par préfixe. Par exemple, interroger apple correspond à apple6s et applexr. Prend en charge le chinois, l'anglais et d'autres langues.

  • Requête par suffixe : Fait correspondre le contenu par suffixe. Par exemple, vous pouvez interroger tous les numéros de téléphone mobile se terminant par 1234.

Requête d'existence de colonne (requête NULL)

Vérifiez si une colonne a une valeur null. Convient aux contrôles d'intégrité des données et au nettoyage des données.

Requête d'existence de colonne

Requête imbriquée

Au-delà des structures plates, les données applicatives possèdent souvent des structures imbriquées à plusieurs niveaux. Par exemple, un système de balisage d'images stocke des images avec plusieurs entités (maisons, voitures, personnes), chacune ayant une position, une taille et un poids (score) différents. Chaque image correspond à plusieurs balises, et chaque balise possède un nom et un score de poids.

Pour filtrer les images selon des conditions de balise, utilisez la requête de type imbriqué. Les balises d'image sont stockées au format JSON :

{
 "tags": [
   {
      "name": "car",
      "score": 0,78
   },
   {
      "name": "tree",
      "score": 0,24
   }
 ]
}

Les requêtes de type imbriqué gèrent les données avec des relations logiques à plusieurs niveaux, offrant une flexibilité pour la modélisation complexe des données.

Pour les structures de données imbriquées complexes (telles que JSON), utilisez la fonctionnalité de résumé et de mise en surbrillance pour localiser précisément les informations requises.

Déduplication

Les index de recherche dédupliquent les résultats de requête pour améliorer la diversité. La déduplication limite le nombre d'apparitions d'une valeur d'attribut spécifique dans un seul ensemble de résultats. Par exemple, lors de la recherche de laptop sur une plateforme e-commerce, la déduplication empêche la première page d'être dominée par une seule marque.

Collapse (déduplication)

Tri

Par défaut, Tablestore trie les données par clé primaire dans l'ordre alphabétique. Pour trier par d'autres champs, utilisez la fonctionnalité de tri d'un index de recherche.

Les index de recherche prennent en charge l'ordre croissant ou décroissant, le tri sur condition unique et le tri multicritères. Tous les tris sont globaux. Par défaut, les résultats des index de recherche sont triés par clé primaire dans l'ordre alphabétique.

Nombre total de lignes

Lors de l'interrogation des données avec un index de recherche, vous pouvez renvoyer le nombre de lignes correspondantes. Cela est utile pour la validation et les opérations sur les données.

  • Une condition de requête vide correspond à toutes les données indexées. Le total renvoyé équivaut au nombre de lignes indexées dans la table de données.

  • Si l'écriture des données est arrêtée et que toutes les données sont indexées, le total équivaut au nombre de lignes dans la table de données.

Agrégation statistique

Les index de recherche fournissent des fonctions d'agrégation courantes : Max, Min, Avg, Sum, Count, DistinctCount, GroupBy, Percentile et Histogram. Elles répondent aux besoins statistiques de base pour une analyse légère.

Agrégation statistique

Régions prises en charge

Actuellement, la fonctionnalité d'index de recherche est disponible dans les régions suivantes : Chine (Hangzhou), Chine (Shanghai), Chine (Qingdao), Chine (Beijing), Chine (Zhangjiakou), Chine (Ulanqab), Chine (Shenzhen), Chine (Guangzhou), Chine (Chengdu), Chine (Hong Kong), Japon (Tokyo), Singapour, Malaisie (Kuala Lumpur), Indonésie (Jakarta), Philippines (Manille), Thaïlande (Bangkok), Allemagne (Francfort), Royaume-Uni (Londres), États-Unis (Silicon Valley), États-Unis (Virginie), Arabie saoudite (Riyad - Région partenaire), et . La fonctionnalité de recherche vectorielle n'est pas encore prise en charge dans la région États-Unis (Silicon Valley).

Reprise après sinistre

Dans les régions dotées de capacités de reprise après sinistre inter-zones, les index de recherche offrent par défaut un stockage redondant inter-zones. Les données sont stockées sur plusieurs zones au sein de la région. En cas de panne d'une seule zone, les services de lecture et d'écriture se poursuivent sans interruption.

Actuellement, l'index de recherche prend en charge le stockage redondant inter-zones dans les régions suivantes : Chine (Hangzhou), Chine (Shanghai), Chine (Beijing), Chine (Zhangjiakou), Chine (Ulanqab), Chine (Shenzhen), Chine (Hong Kong), Japon (Tokyo), Singapour, Indonésie (Jakarta), Allemagne (Francfort), et .

Cycle de vie des données

Si votre table de données n'effectue aucune opération UpdateRow, vous pouvez utiliser le TTL de l'index de recherche. Gestion du cycle de vie.

Si vous devez uniquement conserver les données pendant une période spécifique et que le champ temporel ne nécessite pas de mises à jour, implémentez le TTL en partitionnant les tables par temps.

Dimension

Partitionnement de table par temps

Principe

Partitionnez les tables par intervalle fixe (jour, semaine, mois ou année). Créez un index de recherche pour chaque table et conservez les tables de données pendant la durée requise.

Par exemple, pour conserver les données pendant six mois, stockez les données de chaque mois dans une table séparée (table_1 à table_6) avec son propre index de recherche. Chaque mois, supprimez la table datant d'il y a six mois.

Lors de l'interrogation, si la plage temporelle tient dans une seule table, interrogez uniquement cette table. Si elle s'étend sur plusieurs tables, interrogez chacune d'elles et fusionnez les résultats.

Règle

Une seule table (un seul index) ne doit pas dépasser 50 milliards de lignes. Les performances de requête sont optimales lorsque le nombre de lignes reste inférieur à 20 milliards.

Avantages

  • Contrôlez la durée de conservation des données en gérant le nombre de tables conservées.

  • Les performances de requête évoluent avec le volume de données. Le partitionnement limite la taille de chaque table, ce qui améliore les performances et évite les délais d'expiration des requêtes.

Versions des données

Les index de recherche ne prennent pas en charge plusieurs versions de données. Vous ne pouvez pas créer d'index de recherche pour une table de données avec plusieurs versions activées.

Dans une table à version unique, si vous personnalisez l'horodatage pour chaque écriture, l'écriture de données avec un numéro de version inférieur après un numéro supérieur peut écraser la version supérieure.

Les données renvoyées par les requêtes Search et ParallelScan n'incluent pas nécessairement la propriété d'horodatage.

Limites

Les index de recherche synchronisent les données de la table de données de manière asynchrone, donc les requêtes en temps réel ne sont pas possibles. La latence typique est inférieure à 3 secondes. Limites des index de recherche.

Facturation

Les index de recherche sont facturés pour l'espace de stockage occupé par les données d'index et les ressources de calcul consommées pour les requêtes et l'analyse. Présentation de la facturation.

Développement et intégration

Référence API

Les index de recherche proposent des opérations API pour la gestion des index et l'interrogation des données. L'interrogation des données inclut l'API Search polyvalente et l'API ParallelScan pour l'exportation de données. ParallelScan sacrifie certaines fonctionnalités (tri, agrégation) pour obtenir des performances et un débit plus élevés.

Catégorie

API

Description

Gestion des index

CreateSearchIndex

Crée un index de recherche.

UpdateSearchIndex

Met à jour la configuration d'un index de recherche, y compris sa durée de vie (TTL) et son schéma d'index.

DescribeSearchIndex

Obtient la description détaillée d'un index de recherche.

ListSearchIndex

Répertorie les index de recherche.

DeleteSearchIndex

Supprime un index de recherche.

Interrogation des données

Search

API de requête complète. Prend en charge toutes les fonctionnalités des index de recherche, y compris les fonctions de requête, le tri et l'agrégation statistique. Les résultats sont renvoyés dans l'ordre spécifié.

  • Fonctions de requête : requête sur colonne non-clé primaire, requête d'existence de colonne, requête floue, requête booléenne, requête imbriquée, requête géospatiale, recherche en texte intégral, recherche vectorielle

  • Collapse (déduplication)

  • Tri

  • Agrégation statistique

  • Nombre total de lignes

ParallelScan

API d'exportation de données avec prise en charge du scan parallèle. Inclut toutes les fonctions de requête mais omet le tri et l'agrégation statistique. Renvoie toutes les données correspondantes à plus haute vitesse.

Avec une seule concurrence, le débit de ParallelScan est 5 fois supérieur à celui de l'API Search.

  • Fonctions de requête : requête sur colonne non-clé primaire, requête d'existence de colonne, requête floue, requête booléenne, requête imbriquée, requête géospatiale, recherche en texte intégral

  • Prend en charge plusieurs requêtes concurrentes dans une seule demande

Lors de l'exportation de données avec plusieurs demandes concurrentes, utilisez l'API ComputeSplits pour obtenir la concurrence maximale pour une seule demande ParallelScan.

Méthodes d'intégration

Vous pouvez utiliser les SDK ou outils CLI suivants pour travailler avec les index de recherche.

FAQ

Références

  • Pour interroger et analyser les données avec SQL, utilisez la fonctionnalité Requête SQL de Tablestore.

    Remarque

    Vous pouvez également analyser les données dans Tablestore à l'aide de moteurs de calcul tels que MaxCompute, Spark, Hive, HadoopMR, Function Compute ou Flink. Présentation du calcul et de l'analyse.

Annexe : Mappage SQL

Certaines fonctionnalités des index de recherche correspondent à des fonctions SQL. Le tableau suivant répertorie les mappages.

SQL

Index de recherche

Documentation de l'index de recherche

Show

DescribeSearchIndex

Interroger la description de l'index de recherche

Select

Paramètre ColumnsToGet dans n'importe quelle requête

Toute requête d'index de recherche, telle qu'une requête de base

From

Paramètre IndexName dans n'importe quelle requête

Important

Un seul index est pris en charge. Plusieurs index ne sont pas encore pris en charge.

Toute requête d'index de recherche, telle qu'une requête de base

Where

Conditions dans n'importe quelle requête

Toute requête d'index de recherche, telle qu'une requête de base

Order by

Paramètre sort dans n'importe quelle requête

Tri et pagination

Limit

Paramètre limit dans n'importe quelle requête

Tri et pagination

Delete

  1. Utilisez n'importe quelle requête pour obtenir la clé primaire de la ligne.

  2. Effectuez l'opération DeleteRow.

  1. Obtenez la clé primaire de la ligne via n'importe quelle requête d'index de recherche, telle qu'une requête de base.

  2. Supprimer des données par clé primaire.

Like

WildcardQuery

Requête avec caractères génériques

And

operator = and dans BoolQuery

Requête booléenne

Or

operator = or dans BoolQuery

Not

BoolQuery(mustNotQueries)

Between

RangeQuery

Requête de plage

Null

ExistsQuery

Requête d'existence de colonne

In

TermsQuery

Requête Terms

Min

Agrégation : min

Agrégation statistique

Max

Agrégation : max

Avg

Agrégation : avg

Count

Agrégation : count

Count(distinct)

Agrégation : distinctCount

Sum

Agrégation : sum

Group By

GroupBy