Una consulta por palabra clave puede devolver decenas de miles de documentos. Es poco probable que los usuarios los revisen todos para obtener la información que necesitan. En algunos casos, les resultan más útiles los datos estadísticos.
Sintaxis
Formato de la cláusula de estadísticas:
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 |
Valores válidos |
Valor predeterminado |
Descripción |
|
group_key:field |
field es un campo de atributo |
Sí |
Actualmente, las estadísticas solo son compatibles con campos de tipo INT, LITERAL, INT_ARRAY y LITERAL_ARRAY. (Nota: cuando se calculan estadísticas sobre campos de tipo INT_ARRAY y LITERAL_ARRAY, los valores idénticos del campo se usan como unidad estadística). |
field especifica el nombre del campo sobre el cual se calculan las estadísticas. Este campo debe configurarse como campo de atributo. |
|
|
agg_fun |
Sí |
count(), sum(id), max(id), min(id), distinct_count: cinco funciones del sistema |
func puede ser una de estas cinco funciones del sistema: count(), sum(id), max(id), min(id) y distinct_count(id). Estas cuentan la cantidad de documentos, calculan la suma del campo id, obtienen el valor máximo del campo id, obtienen el valor mínimo del campo id y cuentan los valores distintos del campo id, respectivamente. Se pueden calcular varias funciones al mismo tiempo; en ese caso, sepárelas con signos de número (#). El contenido de sum, max y min admite operaciones aritméticas básicas. |
||
|
range |
No |
Indica el intervalo de number1 a number2 y el intervalo mayor que number2. (Nota: las estadísticas de distribución no son compatibles con campos de tipo string). |
Especifica estadísticas segmentadas, útiles para generar estadísticas de distribución. Solo se admite un único parámetro range. |
||
|
agg_filter |
No |
Indica que las estadísticas se calculan únicamente para los documentos que cumplen condiciones específicas. |
|||
|
agg_sampler_threshold |
int |
No |
Umbral para las estadísticas de muestreo. Los documentos anteriores a este valor se cuentan uno por uno, mientras que los posteriores se cuentan mediante muestreo. |
||
|
agg_sampler_step |
int |
No |
Tamaño de paso para las estadísticas de muestreo. A partir de los documentos posteriores a agg_sampler_threshold, se cuenta un documento cada agg_sampler_step. Para las estadísticas de sum y count, el resultado del muestreo posterior al umbral se multiplica por el tamaño de paso para generar una estimación. La suma de esta estimación y el resultado anterior al umbral da el resultado estadístico final. |
||
|
max_group |
int |
No |
1000 |
Número máximo de grupos que se devuelven. |
Notas de uso
La cláusula aggregate es opcional.
Los campos que aparecen en la cláusula aggregate deben configurarse como campos de atributo al definir el esquema de la aplicación.
Los resultados de agregación se muestran en el nodo facet de los resultados de búsqueda. El nombre de cada campo de valor corresponde al nombre de la función agg_fun, como sum o count.
La cláusula aggregate admite estadísticas sobre varias claves. Separe los distintos cálculos con punto y coma (;).
Formato de referencia:
group_key:field1,agg_fun:func1;group_key:field2,agg_fun:func2
La información de esta cláusula de estadísticas se muestra en facet. Establezca format en fulljson dentro de la cláusula config para que el contenido de facet se devuelva y se muestre.
La función distinct_count solo es compatible con clústeres exclusivos. Además, agregue el parámetro
enable_accurate_statistics:truea la cláusula kvpairs. Al usar esta función, la consulta ya no recupera datos de resultados específicos y solo devuelve los datos estadísticos en facet.Los clústeres exclusivos admiten estadísticas precisas para count, max, min y sum. Para ello, agregue el parámetro
enable_accurate_statistics:truea la cláusula kvpairs.Debido a los límites de rendimiento del motor, la cláusula de estadísticas aggregate solo garantiza un conteo preciso de documentos cuando se recuperan hasta 100,000. Si se cuentan más de 100,000 documentos, no se garantiza la precisión. (En clústeres exclusivos, agregue el parámetro enable_accurate_statistics:true a la cláusula kvpairs para mejorar la precisión estadística).
Ejemplos
-
Busque los documentos que contienen "Zhejiang University" y calcule estadísticas agrupadas por el campo group_id. Las dimensiones estadísticas incluyen la suma y el valor máximo del campo price. Además, cuente los documentos por company_id:
query=default:'Zhejiang University'&&aggregate=group_key:group_id,agg_fun:sum(price)#max(price);group_key:company_id,agg_fun:count()Resultados:
{ status: "OK", result: { searchtime: 0.015634, total: 5, num: 1, viewtotal: 5, items: [ //Specific search results { ... } ], 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: "", }, -
Busque los documentos que contienen "Zhejiang University" y calcule estadísticas agrupadas por el campo group_id. La dimensión estadística es la suma del campo price. Los documentos posteriores a los primeros 10,000 se muestrean con un tamaño de paso de 5:
query=default:'Zhejiang University'&&aggregate=group_key:group_id,agg_fun:sum(price), agg_sampler_threshold:10000, agg_sampler_step:5 -
Busque los documentos que contienen "Zhejiang University" y cuéntelos agrupados por el campo group_id. Las dimensiones estadísticas corresponden a la cantidad de documentos menores que 10, entre 10 y 50, y mayores que 50:
query=default:'Zhejiang University'&&aggregate=group_key:group_id,agg_fun:count(),range:10~50 -
Busque los documentos que contienen "Zhejiang University" y calcule, agrupados por el campo group_id, el valor máximo de la suma de hits y replies. Solo se cuentan los documentos cuyo create_timestamp sea mayor que 1423456781:
query=default:'Zhejiang University'&&aggregate=group_key:group_id,agg_fun:max(hits+replies),agg_filter:create_timestamp>1423456781