Todos los productos
Search
Centro de documentos

OpenSearch:Cláusula de agregación

Última actualización: Sep 04, 2026

Descripción general

Una sola consulta de búsqueda puede devolver decenas de miles de documentos. Sin embargo, es posible que no necesite revisar todos los documentos recuperados para obtener la información requerida. Si desea consultar estadísticas sobre los documentos recuperados, utilice una cláusula de agregación para obtenerlas.

Sintaxis

Sintaxis de una cláusula de agregación:

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

Parámetros:

Parámetro

Tipo

Obligatorio

Valor válido

Valor predeterminado

Descripción

group_key:field

field: un campo de atributo

Sí

Campos de tipo INT, LITERAL, INT_ARRAY o LITERAL_ARRAY. Si el campo de atributo es de tipo INT_ARRAY o LITERAL_ARRAY y un elemento del array se repite, se cuenta el número de sus apariciones.

Especifica el nombre del campo del cual desea recopilar estadísticas. Debe configurar un campo de atributo en este parámetro.

agg_fun

Sí

Las funciones integradas: count(id), sum(id), max(id), min(id) y distinct_count(id).

Establezca func en la función integrada count(), sum(id), max(id), min(id) o distinct_count(id) para calcular el número de documentos, la suma de los valores del campo, el valor máximo del campo, el valor mínimo del campo o el número de valores únicos en un campo. Puede usar varias funciones a la vez si las separa con signos de número (#). Puede hacer referencia a varios campos en la función sum(), max() o min() mediante operadores aritméticos básicos.

range

No

Los valores entre Número 1 y Número 2, y los valores mayores que Número 2. Los valores de campos de tipo STRING no se pueden agregar para recopilar estadísticas.

Genera estadísticas basadas en rangos de valores. Este parámetro se puede utilizar para la distribución de datos. Solo puede especificar un parámetro range en la cláusula de agregación.

agg_filter

No

Recupera los documentos que cumplen con las condiciones especificadas.

agg_sampler_threshold

INT

No

Especifica el umbral para el muestreo de documentos. Los documentos recuperados cuyas clasificaciones son superiores al umbral se cuentan secuencialmente en las estadísticas, mientras que aquellos cuyas clasificaciones son inferiores al umbral se muestrean según el valor del parámetro agg_sampler_step.

agg_sampler_step

INT

No

Especifica el tamaño del paso de muestreo. El valor indica los intervalos en los que se muestrean los documentos cuyas clasificaciones son inferiores al umbral especificado por el parámetro agg_sampler_threshold. Las estadísticas recopiladas por las funciones sum() y count() se procesan de la siguiente manera: el sistema multiplica las estadísticas de los documentos cuyas clasificaciones son inferiores al umbral por el tamaño del paso de muestreo para generar las estadísticas estimadas. Luego, el sistema suma las estadísticas estimadas a las estadísticas de los documentos cuyas clasificaciones son superiores al umbral para generar las estadísticas finales.

max_group

INT

No

1000

Especifica el número máximo de pares clave-elemento que se pueden devolver.

Notas de uso

  • La cláusula de agregación es opcional.

  • Los campos a los que se hace referencia en los parámetros anteriores deben configurarse como campos de atributo al definir el esquema de la aplicación.

  • El resultado de una cláusula de agregación se devuelve al nodo facet, que es un nodo utilizado para búsquedas. Las funciones, como sum() y count(), especificadas por el parámetro agg_fun muestran las estadísticas.

  • Puede especificar varios parámetros group_key en una cláusula de agregación para recopilar estadísticas de diferentes campos al mismo tiempo. Separe los cálculos de los campos con punto y coma (;). Ejemplo: group_key:field1,agg_fun:func1;group_key:field2,agg_fun:func2.

  • El resultado de la cláusula de agregación se devuelve al nodo facet. Para mostrar estadísticas en el resultado devuelto, debe establecer el formato de la cláusula config en full JSON.

  • La función distinct_count solo es compatible con un clúster exclusivo. Para usar esta función, debe agregar el parámetro enable_accurate_statistics en una cláusula kvpairs y establecer este parámetro en true. Cuando se usa esta función, el sistema solo devuelve las estadísticas en el nodo facet para una consulta.

  • Las funciones count(), max(), min() y sum() son compatibles con un clúster exclusivo. Para usar estas funciones, debe agregar el parámetro enable_accurate_statistics en una cláusula kvpairs y establecer este parámetro en true.

  • El sistema puede devolver estadísticas precisas de hasta 100,000 documentos. Si el número de documentos que coinciden con las condiciones especificadas supera los 100,000, las estadísticas devueltas pueden ser imprecisas debido a los límites de rendimiento del motor. Para un clúster exclusivo, puede agregar el parámetro enable_accurate_statistics en una cláusula kvpairs y establecer este parámetro en true. De esta manera, el sistema puede devolver estadísticas más precisas.

Ejemplos

  1. Utilice la siguiente cláusula de consulta para obtener las estadísticas de los documentos que contienen "Zhejiang University". Las estadísticas se calculan en función de los campos group_id y company_id. Para los campos group_id, las estadísticas incluyen la suma de valores y el valor máximo del campo price. Para el campo company_id, las estadísticas incluyen el número de veces que aparece cada empresa.

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

    Ejemplo de resultado devuelto:

    {
      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. Utilice la siguiente cláusula de consulta para obtener las estadísticas de los documentos que contienen "Zhejiang University" en función del campo group_id. Se calcula la suma de valores del campo price. Se muestrean los documentos cuyas clasificaciones son inferiores a 10,000. El tamaño del paso de muestreo se establece en 5.

    query=default:'Zhejiang University'&&aggregate=group_key:group_id,agg_fun:sum(price), agg_sampler_threshold:10000, agg_sampler_step:5
  3. Utilice la siguiente cláusula de consulta para obtener las estadísticas de los documentos que contienen "Zhejiang University" en función del campo group_id. La cláusula de agregación cuenta el número de documentos cuyos valores del campo group_id están en el rango de 10 a 50.

    query=default:'Zhejiang University'&&aggregate=group_key:group_id,agg_fun:count(),range:10~50
  4. Utilice la siguiente cláusula de consulta para obtener las estadísticas de los documentos que contienen "Zhejiang University" en función del campo group_id. Se calcula la suma máxima de valores de los campos hits y replies entre los documentos cuyos valores del campo create_timestamp son mayores que 1423456781.

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