Tous les produits
Search
Centre de documentation

OpenSearch:Clause d'agrégation

Dernière mise à jour :Aug 24, 2026

Présentation

Une seule requête de recherche peut renvoyer des dizaines de milliers de documents. Toutefois, il n'est pas nécessaire de consulter l'intégralité des résultats pour obtenir les informations souhaitées. Si vous souhaitez afficher des statistiques sur les documents récupérés, utilisez une clause d'agrégation.

Syntaxe

Syntaxe d'une clause d'agrégation :

group_key:field, range:number1~number2, agg_fun:func1#func2, max_group:number2, 
agg_filter:filter_clause, max_group:number

Paramètres :

Paramètre

Type

Obligatoire

Valeur valide

Valeur par défaut

Description

group_key:field

field : champ d'attribut

Oui

Champs de type INT, LITERAL, INT_ARRAY ou LITERAL_ARRAY. Si le champ d'attribut est de type INT_ARRAY ou LITERAL_ARRAY et qu'un élément du tableau est répété, le nombre d'occurrences est comptabilisé.

Spécifie le nom du champ pour lequel vous souhaitez collecter des statistiques. Vous devez configurer un champ d'attribut dans ce paramètre.

agg_fun

Oui

Fonctions intégrées : count(id), sum(id), max(id), min(id) et distinct_count(id).

Définissez func sur la fonction intégrée count(), sum(id), max(id), min(id) ou distinct_count(id) pour calculer le nombre de documents, la somme des valeurs de champ, la valeur maximale de champ, la valeur minimale de champ ou le nombre de valeurs uniques dans un champ. Vous pouvez utiliser plusieurs fonctions simultanément en les séparant par des dièses (#). Vous pouvez référencer plusieurs champs dans les fonctions sum(), max() ou min() à l'aide d'opérateurs arithmétiques de base.

range

Non

Les valeurs comprises entre Number 1 et Number 2, ainsi que les valeurs supérieures à Number 2. Les statistiques ne peuvent pas être agrégées pour les champs de type STRING.

Génère des statistiques basées sur des plages de valeurs. Ce paramètre est utile pour analyser la distribution des données. Vous ne pouvez spécifier qu'un seul paramètre range dans la clause d'agrégation.

agg_filter

Non

Récupère les documents qui répondent aux conditions spécifiées.

agg_sampler_threshold

INT

Non

Spécifie le seuil d'échantillonnage des documents. Les documents récupérés dont le rang est supérieur au seuil sont comptés séquentiellement dans les statistiques, tandis que ceux dont le rang est inférieur au seuil sont échantillonnés selon la valeur du paramètre agg_sampler_step.

agg_sampler_step

INT

Non

Spécifie la taille du pas d'échantillonnage. Cette valeur indique les intervalles auxquels les documents dont le rang est inférieur au seuil défini par le paramètre agg_sampler_threshold sont échantillonnés. Les statistiques collectées par les fonctions sum() et count() sont traitées comme suit : le système multiplie les statistiques des documents dont le rang est inférieur au seuil par la taille du pas d'échantillonnage pour générer des statistiques estimées. Ensuite, le système ajoute ces statistiques estimées aux statistiques des documents dont le rang est supérieur au seuil pour obtenir les statistiques finales.

max_group

INT

Non

1000

Spécifie le nombre maximal de paires clé-élément pouvant être renvoyées.

Remarques d'utilisation

  • La clause d'agrégation est facultative.

  • Les champs référencés dans les paramètres précédents doivent être configurés en tant que champs d'attribut lors de la définition du schéma de l'application.

  • Le résultat d'une clause d'agrégation est renvoyé au nœud facet, qui est un nœud utilisé pour les recherches. Les fonctions spécifiées par le paramètre agg_fun, telles que sum() et count(), affichent les statistiques.

  • Vous pouvez spécifier plusieurs paramètres group_key dans une clause d'agrégation pour collecter simultanément des statistiques pour différents champs. Séparez les calculs pour chaque champ par des points-virgules (;). Exemple : group_key:field1,agg_fun:func1;group_key:field2,agg_fun:func2.

  • Le résultat de la clause d'agrégation est renvoyé au nœud facet. Pour afficher les statistiques dans le résultat renvoyé, vous devez définir le format de la clause config sur full JSON.

  • La fonction distinct_count est prise en charge uniquement dans un cluster exclusif. Pour utiliser cette fonction, vous devez ajouter le paramètre enable_accurate_statistics dans une clause kvpairs et le définir sur true. Lorsque cette fonctionnalité est activée, le système renvoie uniquement les statistiques dans le nœud facet pour une requête.

  • Les fonctions count(), max(), min() et sum() sont prises en charge dans un cluster exclusif. Pour utiliser ces fonctions, vous devez ajouter le paramètre enable_accurate_statistics dans une clause kvpairs et le définir sur true.

  • Le système peut renvoyer des statistiques précises pour jusqu'à 100 000 documents. Si le nombre de documents correspondant aux conditions spécifiées dépasse 100 000, les statistiques renvoyées peuvent être imprécises en raison des limites de performance du moteur. Pour un cluster exclusif, vous pouvez ajouter le paramètre enable_accurate_statistics dans une clause kvpairs et le définir sur true. Le système pourra ainsi renvoyer des statistiques plus précises.

Exemples

  1. Utilisez la clause de requête suivante pour obtenir les statistiques des documents contenant « Zhejiang University ». Les statistiques sont calculées en fonction des champs group_id et company_id. Pour les champs group_id, les statistiques incluent la somme des valeurs et la valeur maximale du champ price. Pour le champ company_id, les statistiques incluent le nombre d'occurrences de chaque entreprise.

    query=default:'Zhejiang University'&&aggregate=group_key:group_id,agg_fun:sum(price)#max(price);group_key:company_id,agg_fun:count()

    Exemple de résultat renvoyé :

    {
      status: "OK",
      result: {
        searchtime: 0.015634,
        total: 5,
        num: 1,
        viewtotal: 5,
        items: [        // The return result.
          { ... }
        ],
        facet: [
          {
            key: "group_id",
            items: [
              {
                value: 43,
                sum: 81,
                max: 20,
              },
              {
                value: 63,
                sum: 91,
                max: 50,
              },
            ],
          },
          {
            key: "company_id",
            items: [
              {
                value: 13,
                count: 4,
              },
              {
                value: 10,
                count: 1,
              },
            ],
          },
        ],
      },
      errors: [ ],
      tracer: "",
    },
  2. Utilisez la clause de requête suivante pour obtenir les statistiques des documents contenant « Zhejiang University » en fonction du champ group_id. La somme des valeurs du champ price est calculée. Les documents dont le rang est inférieur à 10 000 sont échantillonnés. La taille du pas d'échantillonnage est définie sur 5.

    query=default:'Zhejiang University'&&aggregate=group_key:group_id,agg_fun:sum(price), agg_sampler_threshold:10000, agg_sampler_step:5
  3. Utilisez la clause de requête suivante pour obtenir les statistiques des documents contenant « Zhejiang University » en fonction du champ group_id. La clause d'agrégation compte le nombre de documents dont les valeurs du champ group_id se situent dans la plage de 10 à 50.

    query=default:'Zhejiang University'&&aggregate=group_key:group_id,agg_fun:count(),range:10~50
  4. Utilisez la clause de requête suivante pour obtenir les statistiques des documents contenant « Zhejiang University » en fonction du champ group_id. La somme maximale des champs hits et replies est calculée parmi les documents dont les valeurs du champ create_timestamp sont supérieures à 1423456781.

    query=default:'Zhejiang University'&&aggregate=group_key:group_id,agg_fun:max(hits+replies),agg_filter:create_timestamp>1423456781