Tous les produits
Search
Centre de documentation

Tablestore:Requête multi-conditions

Dernière mise à jour :Sep 09, 2026

Une requête booléenne (BoolQuery) contient une ou plusieurs sous-requêtes. Elle vérifie si une ligne satisfait aux conditions de la requête à l'aide de ces sous-requêtes. Chaque sous-requête peut être de n'importe quel type, y compris une autre requête booléenne.

Prérequis

Paramètres

Paramètre

Description

tableName

Nom de la table de données.

indexName

Nom de l'index de recherche.

mustQueries

Liste de requêtes. Une ligne doit correspondre à toutes les sous-requêtes. Cela équivaut à l'opérateur AND.

mustNotQueries

Liste de requêtes. Une ligne ne doit correspondre à aucune des sous-requêtes. Cela équivaut à l'opérateur NOT.

filterQueries

Liste de requêtes. Une ligne doit correspondre à toutes les sous-requêtes du filtre. Un filtre est similaire à une requête, mais il ne calcule pas de score de pertinence basé sur le nombre de filtres correspondants.

shouldQueries

Liste de requêtes. Une ligne peut correspondre à ces sous-requêtes. Cela équivaut à l'opérateur OR.

Pour qu'une ligne soit considérée comme correspondante, elle doit satisfaire au moins au nombre minimal de sous-requêtes shouldQueries.

Plus une ligne correspond à un grand nombre de sous-requêtes shouldQueries, plus son score de pertinence est élevé.

minimumShouldMatch

Nombre minimal de correspondances requises pour les requêtes shouldQueries. La valeur par défaut est 1 si seules les requêtes shouldQueries existent au même niveau. La valeur par défaut est 0 si d'autres requêtes, telles que mustQueries, mustNotQueries et filterQueries, existent au même niveau.

Exemple

L'exemple suivant montre comment construire une BoolQuery pour effectuer une requête booléenne.

var client = require('../client');
var TableStore = require('../../index.js');
var Long = TableStore.Long;
/**
 * Use a boolean query to implement (col2 < 4 OR col3 < 5) OR (col2 = 4 AND (col3 = 5 OR col3 = 6)). The logic is as follows:
 * boolQuery1 = rangeQuery(col2 < 4) OR rangeQuery(col3 < 5)
 * boolQuery2 = termQuery(col3 = 5) OR termQuery(col3 = 6)
 * boolQuery3 = termQuery(col2 = 4) AND boolQuery2
 * boolQuery4 = boolQuery1 OR boolQuery3
 */
client.search({
    tableName: "sampleTable",
    indexName: "sampleSearchIndex",
    searchQuery: {
        offset: 0, // The query offset.
        limit: 10, // To get only the row count without retrieving data, set limit to 0. This returns no rows.
        getTotalCount: false, // TotalCount in the result indicates the total number of rows in the table. The default value is false, which means it is not returned.
        query: { // Construct boolQuery4. Set the query condition to match at least one of boolQuery1 and boolQuery3.
            queryType: TableStore.QueryType.BOOL_QUERY,
            query: {
                shouldQueries: [ // You can use mustQueries, shouldQueries, or mustNotQueries.
                    { // Construct boolQuery1. Set the query condition to match at least one of "Query Condition 1" and "Query Condition 2".
                        queryType: TableStore.QueryType.BOOL_QUERY,
                        query: {
                            // shouldQueries: The query condition is that the value of col2 is less than 4 or the value of col3 is less than 5.
                            shouldQueries:[
                                {
                                    // Query Condition 1: rangeQuery, the value of col2 is less than 4.
                                    queryType: TableStore.QueryType.RANGE_QUERY,
                                    query:{
                                        fieldName: "col2",
                                        rangeTo: 4
                                    }
                                },
                                {
                                    // Query Condition 2: rangeQuery, the value of col3 is less than 5.
                                    queryType: TableStore.QueryType.RANGE_QUERY,
                                    query:{
                                        fieldName: "col3",
                                        rangeTo: 5
                                    }
                                }
                            ],
                            minimumShouldMatch:1

                        }
                    },
                    { // Construct boolQuery3. Set the query condition to match both "Query Condition 3" and boolQuery2.
                        queryType: TableStore.QueryType.BOOL_QUERY,
                        query: {
                            mustQueries: [
                                // mustQueries: The query condition is that the value of col2 is 4, and the value of col3 is 5 or 6.
                                {
                                    // Query Condition 3: termQuery, the value of col2 is 4.
                                    queryType:TableStore.QueryType.TERM_QUERY,
                                    query: {
                                        fieldName : "col2",
                                        term: 4
                                    }
                                },
                                { // Construct boolQuery2: Set the query condition to match at least one of "Query Condition 4" and "Query Condition 5".
                                    queryType: TableStore.QueryType.BOOL_QUERY,
                                    query: {
                                        // shouldQueries: The query condition is that the value of col3 is 5 or 6.
                                        shouldQueries:[
                                            {
                                                // Query Condition 4: termQuery, the value of col3 is 5.
                                                queryType: TableStore.QueryType.TERM_QUERY,
                                                query:{
                                                    fieldName:"col3",
                                                    term: 5
                                                }
                                            },
                                            {
                                                // Query Condition 5: termQuery, the value of col3 is 6.         
                                                queryType: TableStore.QueryType.TERM_QUERY,
                                                query:{
                                                    fieldName:"col3",
                                                    term: 6
                                                }
                                            }
                                        ],
                                        minimumShouldMatch:1
                                    }
                                }
                            ]
                        }
                    }
                ],
                minimumShouldMatch: 1 // This is valid only for shouldQueries. It specifies the minimum number of conditions to match.
            }
        },
    },
    columnToGet: { // Specifies the columns to return. Valid values: RETURN_SPECIFIED (returns custom columns), RETURN_ALL (returns all columns), RETURN_ALL_FROM_INDEX (returns all columns from the search index), and RETURN_NONE (returns no columns).       
        returnType: TableStore.ColumnReturnType.RETURN_SPECIFIED,
        returnNames: ["col2", "col3", "col4"]
    }
}, 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 booléenne, requête geo, requête nested, requête vector et requête exists. Sélectionnez un type de requête pour interroger les données en fonction de vos besoins métier.

    Pour trier ou paginer les lignes qui satisfont aux conditions de la requête, utilisez la fonctionnalité de tri et de pagination. Pour plus d'informations, consultez la rubrique Tri et pagination.

    Pour regrouper l'ensemble de résultats en fonction d'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 de la requête. Pour plus d'informations, consultez la rubrique Regroupement (distinct).

  • Pour analyser les données d'une table de données, par exemple pour obtenir les valeurs extrêmes, la somme et le nombre total de lignes, 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 qui satisfont aux conditions de la requête sans avoir besoin de les trier, appelez les opérations ParallelScan et ComputeSplits pour utiliser la fonctionnalité d'analyse parallèle. Pour plus d'informations, consultez la rubrique Analyse parallèle.