Lors d'une requête avec caractères génériques, utilisez les caractères astérisque () et point d'interrogation (?) pour rechercher des données. L'astérisque () correspond à une chaîne de n'importe quelle longueur située avant, après ou au sein d'un terme de recherche. Le point d'interrogation (?) correspond à un seul caractère à une position spécifique. La chaîne peut commencer par un astérisque () ou un point d'interrogation (?). Par exemple, la recherche de la chaîne « tablee » permet de trouver « tablestore ».
Si le modèle de requête est *word* (équivalent à WHERE field_a LIKE '%word%' en SQL), privilégiez la fonctionnalité de requêtes avec caractères génériques basées sur les jetons pour optimiser les performances. Les performances restent stables quelle que soit la volumétrie des données.
Pour effectuer une recherche NOT LIKE, utilisez une WildcardQuery avec le paramètre mustNotQueries d'une BoolQuery.
Prérequis
Initialisez une instance OTSClient. Pour plus d'informations, consultez la rubrique Initialiser une instance OTSClient.
Créez une table de données et écrivez-y des données. Pour plus d'informations, consultez les rubriques Créer des tables de données et Écrire des données.
Créez un index de recherche pour la table de données. Pour plus d'informations, consultez la rubrique Créer un index de recherche.
Paramètres
|
Paramètre |
Description |
|
tableName |
Nom de la table de données. |
|
indexName |
Nom de l'index de recherche. |
|
offset |
Position de départ de la requête actuelle. |
|
limit |
Nombre maximal de lignes à renvoyer par la requête actuelle. |
|
queryType |
Type de requête. Définissez ce paramètre sur |
|
fieldName |
Nom de la colonne à interroger. |
|
value |
Chaîne contenant des caractères génériques. Sa longueur maximale est de 32 caractères. |
|
getTotalCount |
Indique s'il faut renvoyer le nombre total de lignes correspondant aux conditions de requête. La valeur par défaut est Définir le paramètre |
|
columnToGet |
Indique s'il faut renvoyer toutes les colonnes de chaque ligne répondant aux conditions de requête. Configurez
|
Exemples
L'exemple de code suivant recherche les lignes dont la valeur de Col_Keyword correspond à la chaîne « table*e ».
/**
* Search the table for rows in which the value of Col_Keyword matches "table*e".
*/
client.search({
tableName: TABLE_NAME,
indexName: INDEX_NAME,
searchQuery: {
offset: 0,
limit: 10, // To query only the number of rows that meet the query conditions without returning specific data, you can set limit to 0. This way, Tablestore returns the number of rows that meet the query conditions without specific data from the table.
query: { // Set the query type to TableStore.QueryType.WILDCARD_QUERY.
queryType: TableStore.QueryType.WILDCARD_QUERY,
query: {
fieldName: "Col_Keyword",
value: "table*e" // Specify a string that contains one or more wildcard characters in a wildcard query.
}
},
getTotalCount: true // Specify whether to return the total number of rows that meet the query conditions. The default value of this parameter is false, which indicates that the total number of rows that meet the query conditions is not returned.
},
columnToGet: { // Specify the columns that you want to return. You can set the parameter to RETURN_SPECIFIED to return specified columns, RETURN_ALL to return all columns, RETURN_ALL_FROM_INDEX to return all columns in the search index, or RETURN_NONE to return only the primary key columns.
returnType: TableStore.ColumnReturnType.RETURN_ALL
}
}, function (err, data) {
if (err) {
console.log('error:', err);
return;
}
console.log('success:', JSON.stringify(data, null, 2));
});
FAQ
Références
-
Les index de recherche prennent en charge les types de requêtes 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 Boolean, requête geo, requête nested, requête vector et requête exists. Sélectionnez le type de requête adapté à vos besoins métier.
Pour trier ou paginer les lignes répondant aux conditions de requête, utilisez la fonctionnalité de tri et de pagination. Pour plus d'informations, consultez la rubrique Tri et pagination.
Pour regrouper l'ensemble des résultats selon une colonne spécifique, utilisez la fonctionnalité de regroupement (distinct). Ainsi, les données du type spécifié n'apparaissent qu'une seule fois dans les résultats. Pour plus d'informations, consultez la rubrique Regroupement (distinct).
Pour analyser les données d'une table (valeurs extrêmes, somme, nombre total de lignes, etc.), effectuez des opérations d'agrégation ou exécutez des instructions SQL. Pour plus d'informations, consultez les rubriques Agrégation et Requête SQL.
Pour obtenir rapidement toutes les lignes répondant aux conditions de requête sans tri, appelez les opérations
ParallelScanetComputeSplitsafin d'utiliser la fonctionnalité d'analyse parallèle. Pour plus d'informations, consultez la rubrique Analyse parallèle.