Agregaciones

Agregaciones optimizan búsquedas complejas, haciéndolas más rápidas y sencillas. Se pueden agregar varias búsquedas, realizándose y mostrándose como una sola solicitud y resultado final. Esto aumenta el rendimiento y mejora la experiencia del usuario. En comparación con las consultas (queries), las agregaciones consumen más CPU y memoria.

Cada agregación es una combinación de uno o más buckets y cero o más métricas.

Por ejemplo, en la consulta

SELECT COUNT(status_code)
FROM table
GROUP BY status_code

COUNT(status_code) es como una metric y
GROUP BY status_code es como un bucket.

Vea más sobre:

Buckets

Los bucket sirven para organizar documentos en grupos con base ​​en ciertos criterios, según el tipo de agregación. El concepto surge de la idea de recoger documentos en baldes (traducción de cubetas). Buckets no calcula métricas como lo hace metrics.

Como ejemplos de agrupación en buckets: la fecha 2022-12-19 estaría en el bucket (balde) December (diciembre) y la ciudad de Campinas, en el bucket del estado de São Paulo.

Los buckets pueden estar contenidos dentro de otros buckets. Por ejemplo, Campinas entraría en el bucket del estado de São Paulo y todo el bucket de São Paulo estaría en el bucket de Brasil.

Consulte la siguiente tabla para obtener la descripción de los principales tipos de buckets. La imagen abajo muestra una parte de la pantalla Visualize con la lista para elegir el tipo de bucket. Consulte también cómo crear una nueva visualización y aprenda cómo llegar a esta pantalla para elegir el tipo de bucket.

ver detalle de pantalla con tipos de depósito


Principales tipos de buckets

Tipo

Definición

Parámetros

Histograma (histograma)

Agrupa documentos en buckets dinámicamente en función de rangos específicos (valores numéricos o rangos numéricos). Similar a la agregación por range; sin embargo, en lugar de especificar cada intervalo de forma específica, puedes activar la opción usar intervalo automático o introducir un número para el intervalo mínimo. Ejemplo de uso: muestrar la cantidad de un evento (por ejemplo, la cantidad de respuestas con error 400) que ocurre cada mes.

Minimum interval: Seleccione Use auto interval o especifique el intervalo mínimo.

Date histogram (histograma de fecha)

Similar al histograma simple, pero solo se usa con valores de fecha o intervalo de fechas.
La diferencia con el histograma simple es que el histograma de fechas comprende los conceptos de un calendario (p. ej., sabe que diciembre tiene más días que febrero, diferencia entre zonas horarias). Histograma simple interpreta las fechas como números.

Minimum interval: especifique el intervalo de redondeo mínimo. Por defecto, Auto está seleccionado. Otras unidades admitidas: milisegundo, segundo, minuto, hora, día, semana, mes y año.

Range (rango)

Define un conjunto de intervalos, cada uno de los cuales representa un bucket. Cada documento se revisa según el rango de variación de su intervalo y se agrupa según su relevancia o correspondencia con este rango, que puede ser numérico, de fechas o de dirección IP. Ejemplo de uso: al buscar un determinado tipo de producto en una tienda en línea, range puede mostrar el rango de precios más popular para ese tipo de producto.

_>=_: informe el valor del inicio del intervalo
_<__: informe el valor del final del intervalo

Date range (rango de fechas)

Agregación de rango específico a fechas.

Acceptable date formats: Determine el inicio y final del rango.
Ejemplo:
desde: ahora-1w/w < ahora menos 1 semana, redondeado al comienzo de la semana.
a:ahora >= ahora menos 1 semana, redondeado al comienzo de la semana.

Filters (filtros)

Agregación donde cada bucket contiene documentos que coinciden con una consulta. Es posible definir más de un filtro.

Filter: proporcione la expresión de búsqueda. Puede escribilo en DQL o Lucene. Haga clic en + Add filter para agregar otro filtro.

NOTE: Seleccione Lucene o DQL y utilice una sintaxis correspondiente. Para que una consulta escrita en Lucene se interprete correctamente, es necesario seleccionar Lucene. Lo mismo es válido para DQL.

Terms (términos)

Agrupa por categorías y recupera el número total de documentos en cada categoría. Es decir, terms le indica el número de veces que aparece un determinado vocablo en sus documentos.

Order by defina el tipo de orden en función de la métrica (metrics) seleccionada, que puede ser:
Custom metric: métrica personalizada o
Alphabetical: alfabético.

Significant terms (vocablos significativos)

Devuelve ocurrencias de vocablos significativos o inusuales. El resultado que se muestra es la diferencia entre la aparición de un vocablo en todo el índice y la aparición del mismo vocablo en sus resultados de búsqueda (queries), destacando los vocablos que son relevantes dentro de cada contexto de búsqueda. Por ejemplo, el vocablo "sensedia" sería relevante en el contexto de "apis".

Size: Defina cuántos term buckets deben devolverse de la lista total de terms.

Parámetros avanzados

Las agregaciones de metrics y buckets le permiten agregar parámetros avanzados.

Para acceder a los parámetros avanzados, haga clic en el icono de expandir/contraer junto a Advanced (imagen a continuación).

Dependiendo del tipo o campo seleccionado para la agregación, además del campo para inserción en formato JSON, pueden estar disponibles diferentes opciones para ingresar o seleccionar datos.

animación que muestra el campo de entrada JSON


Vea en la siguiente tabla las definiciones y los ejemplos de uso de los principales parámetros avanzados de las agregaciones de bucket.

Las definiciones de cada tipo de agregación de bucket y sus parámetros básicos se encuentran en la tabla anterior.

Tipo

Parámetros avanzados

Date histogram

  • calendar_interval especifica intervalos de calendario usando el nombre (p. ej., month) o la unidad (p. ej., 1M). No se admiten cantidades como 2M. 1M y +mes son equivalentes. Unidades admitidas: minute o 1m, hour o 1h, day o 1d, week o 1w, month o + 1M+, quarter o 1q, year o 1y.
    Ejemplo: calendar_interval: "1M"

  • fixed_interval establece intervalos fijos, independientemente del calendario. Le permite expresar múltiplos de una unidad. Los meses y trimestres no se pueden definir como intervalos fijos porque varían. Unidades admitidas: milisegundos ms, segundos s, minutos m, horas h, días d.
    Ejemplo: "intervalo_fijo": "30d".

  • keys Timestamps que representan la fecha se devuelven en buckets de keys.

  • key_as_string mismo timestamp, convertido a una fecha en formato string, cuyo formato se especifica en el parámetro format.
    Ejemplo: "key_as_string": "2022-12-19"

  • time-zone utilizado para indicar una zona horaria distinta a la predeterminada. La zona horaria predeterminada utilizada para el almacenamiento es UTC.
    Ejemplo: "time_zone": "-01:00"

  • offset establece otros intervalos dentro de una unidad. Por ejemplo, cada depósito con el rango "day" se ejecuta de medianoche a medianoche. Ajustando offset a +6h, cada bucket va de las 6 a.m. a las 6 p.m.
    Ejemplo: "offset": "+6h"

  • keyed cuando está habilitado, asocia una sola string key con cada bucket y devuelve los rangos como hash en lugar de array.
    Ejemplo: "keyed": true

  • order establece el orden de clasificación de los resultados. Ejemplos: "order": { "_key": "asc" }

  • min_doc_count establece la cantidad mínima de buckets para la respuesta. Por defecto, el histograma devuelve buckets incluso cuando el recuento es cero.

  • extended_bounds amplía los límites, obligando a que se muestren los buckets incluso si caen antes del valor mínimo o después del valor máximo. min_doc_count devuelve buckets vacíos, pero por defecto solo devuelve buckets que están entre los valores mínimo y máximo.

Range y Date range

  • missing define cómo manejar los valores faltantes. Por defecto se ignoran tales valores. En el ejemplo abajo, los documentos que no tienen un valor en el campo date se agregarán al bucket "Older" como si tuvieran el valor "1976/11/30".
    Ejemplo:

"missing": "1976/11/30",
"ranges":[
    {
        "key": "Older",
        "to": "2015/01/01"
    },
]
  • keyed cuando está habilitado, asocia una sola string key con cada bucket y devuelve los rangos como hash en lugar de array.
    Ejemplo: "keyed": true

Filtros

  • other_bucket agrega un bucket a la respuesta, reuniendo todos los documentos que no coinciden con ciertos filtros. Los valores pueden ser:
    false no agrega el other (otro) bucket,
    true devuelve el bucket con nombre other (si se usan filtros con nombre) o como el último bucket (si se usan filtros anónimos).

  • other_bucket_key se utiliza para definir otro valor para la clave other (otro) bucket, diferente del valor predeterminado other.
    Ejemplo: "other_bucket_key": "other_messages"

Histograma

  • missing define cómo manejar los valores faltantes. Por defecto se ignoran tales valores. En el ejemplo abajo, los documentos que no tienen un valor en el campo quantity se agregarán al mismo bucket que los documentos que tienen el valor 0.
    Ejemplo:

"histogram": {
         "field": "quantity",
         "range": 10,
         "missing": 0
       }
  • min_doc_count establece la cantidad mínima de buckets para la respuesta. Por defecto, el histograma devuelve buckets incluso cuando el recuento es cero.
    Ejemplo: "min_doc_count": 1

  • extended_bounds extiende los límites, obligando a que se muestren buckets incluso si caen antes del valor mínimo o después del valor máximo. min_doc_count devuelve buckets vacíos, pero por defecto solo devuelve buckets que están entre los valores mínimo y máximo.
    Ejemplo:

"extended_bounds" : {
                 "min" : "2014-01-01",
                 "max" : "2014-12-31"
             }
  • order establece el orden de clasificación de los resultados.
    Ejemplos: "orden": { "_key": "asc" }

Terms and Significant terms

  • include y exclude filtran valores para los cuales se crearán buckets. include determina qué valores están "permitidos" en la agregación y exclude determina qué valores no se incluirán en la agregación. include precede a exclude.

  • min_doc_count establece el número mínimo de resultados devueltos con las principales ocurrencias. Por defecto se establece en 3. Se recomienda no establecer en 1.
    Ejemplo: "min_doc_count": 10

  • size establece la cantidad devuelta. Por defecto se devuelven los 10 primeros vocablos o vocablos significativos, según el orden seleccionado. Puede cambiar size a 0 para obtener todos los términos (sin embargo, tenga en cuenta que el resultado puede ser grande, lo que afectará a la CPU y la red).

  • shard_size define cuántos documentos, como máximo, se deben recopilar de cada shard. Por defecto (-1), esta cantidad se estima automáticamente, según la cantidad de shards y el parámetro size. shard_size no puede ser más pequeño que size.
    Ejemplo: "shard_size": 1000

Agregaciones de métricas

Las agregaciones de tipo Metrics extraen estadísticas de documentos agrupados en uno o más buckets, o de buckets provenientes de otras agregaciones. En términos generales, metrics genera uno o más números que describen los documentos agrupados.

Metrics puede ser del tipo:

  • Single-value: devuelve solo una métrica.

  • Multi-value: devuelve más de una métrica.

Vea en la tabla abajo una breve descripción de cada agregación de metrics. La imagen abajo muestra la parte de la pantalla Visualize donde se elige la agregación metrics.

detalle de la pantalla Visualize que muestra la selección de metrics


Principales agregaciones de metrics

Metrics

Descripción

Average (promedio)

Agregación de metrics de tipo single-value que calcula el promedio de los valores numéricos de los documentos contenidos en buckets. Los valores pueden provenir de campos de histograma u otros campos numéricos.

Count (contar)

Esta metric cuenta los documentos presentes en cada uno de los buckets seleccionados.

Sum (suma)

Agregación de metric de tipo single-value que suma los valores numéricos de los documentos presentes en los buckets.

Max

Agregación de metric de tipo single-value que trae el valor máximo de valores numéricos de documentos presentes en los buckets.

Mediana (mediana)

Agregación de metric de tipo single-value que calcula la mediana de valores numéricos. La mediana se indica para que valores extremadamente altos o bajos (outliers) no influyan en el resultado, como sucede con el promedio (average).

Min

Agregación de metric de tipo single-value que devuelve el valor mínimo de valores numéricos de documentos presentes en buckets.

Percentiles

Agregación de métricas de tipo multi-value que calcula uno o más percentiles de valores numéricos de documentos presentes en los buckets. El percentil es el porcentaje de datos que son iguales o menores que un valor dentro de una distribución de frecuencia. La distribución estándar es [1, 5, 25, 50, 75, 95, 99]. Como alternativa, puede elegir diferentes valores, de 0 a 100. Suele usarse para encontrar valores atípicos. Esta métrica es una aproximación. Ejemplo de uso: considerando visitas a su página, muestre el delay más común y cuánto duran los tiempos de respuesta más largos.

Percentile ranks

Agregación de métricas de tipo multi-value que calcula uno o más percentile ranks sobre valores numéricos de documentos presentes en buckets. El percentile rank de un valor dado es el percentil de valores iguales o menores a un límite, agrupados por un cierto valor. Por ejemplo, si un valor es mayor o igual al 80 % de los valores, entonces su percentile rank es 80 %. Útil, por ejemplo, para usar en visualizaciones que monitorean el Acuerdo de Nivel de Servicio (SLA).

Standard deviation (desviación estándar)

Representa la variación de un grupo de valores alrededor de la media. Una desviación estándar baja indica que los valores tienden a estar cerca de la media o el valor esperado.

Top hits

Agregación de metrics de tipo multi-value que clasifica los datos más relevantes. Se recomienda utilizarlo como sub agregador para poder agrupar los documentos más relevantes por buckets. Configuraciones:
- Size: establece el número máximo de top hits por bucket.
- Aggregate with: en caso de que el size elegido sea mayor que 1, define aquí cómo se agruparán los resultados.
- Sort on: establezca cómo deben ordenarse los top hits.

Unique count

Agregación de metrics de tipo single-value que presenta el conteo aproximado de valores distintos en un campo. Se puede usar, por ejemplo, para ver la cantidad de direcciones IP únicas que acceden a su servicio.


Pipeline aggregations

Con pipeline aggregations puede concatenar agregaciones usando los resultados de una agregación como entrada para otra agregación.

Las pipeline aggregations permiten cálculos estadísticos más complejos, como derivados, sumas acumuladas y promedios móviles.

  • Parent pipeline: pipeline aggregation en la que los resultados de una agregación padre se utilizan para calcular nuevos buckets o nuevas agregaciones que se agregarán a los buckets existentes. Se requiere que min_doc_count para la parent pipeline sea 0, que es el valor predeterminado para las agregaciones de tipo histograma. La métrica debe basarse en valores numéricos.

  • Sibiling pipeline: pipeline aggregation en la que los resultados de una agregación hermana se utilizan para calcular una nueva agregación que estará al mismo nivel que la agregación hermana. Necesariamente, las sibiling pipelines son de tipo multi-value y la métrica debe ser un valor numérico.

Las pipeline aggregations están en la misma lista que las agregaciones de metrics, como se muestra en la imagen a continuación.

detalle de la pantalla Visualize con la lista de metrics con pipeline aggregations

Al seleccionar una agregación pipeline aggregation (identificada como 1 en la figura a continuación), sea parent o sibiling, se abre otro cuadro a continuación para que pueda configurar la segunda agregación (identificada como 2 en la figura a continuación):

detalle de la pantalla Visualize con el área de configuración de la segunda agregación

Parent pipeline aggregations

Agregación

Descripción

Cumulative sum suma acumulativa

Calcula la suma acumulada de una métrica en una agregación padre de tipo histograma o date histogram. Esta agregación calcula el valor del campo sumando el valor anterior al valor actual. El resultado será un valor único que representa la suma acumulativa de los valores del campo. La métrica debe ser numérica y el histograma añadido debe tener min_doc_count establecido en 0 (valor por defecto para la agregación de tipo de histograma).

Derivative derivada

Calcula la derivada de una métrica en una agregación padre de tipo histograma o date histogram. La métrica debe ser numérica y el histograma añadido debe tener min_doc_count establecido en 0 (valor por defecto para la agregación del tipo de histograma). Las derivadas describen la tasa de cambio de una función, para analizar y resumir datos. Se puede utilizar para identificar tendencias y anomalías en los datos.

Moving avg promedio móvil

Encuentra series de medias de diferentes subgrupos (ventanas) de un dataset. Se puede utilizar para suavizar las fluctuaciones o resaltar tendencias o ciclos en datos de tipo time_series.

Serial diff

Serial differencing es una técnica que subtrae un valor en una serie de tiempo de sí mismo en un intervalo o período diferente. Primero, debe especificar un histogram o date_histogram para un campo. Luego puede agregar una métrica simple como sum dentro del histograma, luego agregue serial diff al histograma.


Sibling pipeline aggregations

Agregación

Descripción

Average bucket

Calcula el valor promedio de una métrica específica en una agregación de tipo sibiling. La métrica debe ser numérica y la sibling aggregation debe ser de tipo multi-bucket. Especifique un intervalo redondeo mínimo. Por defecto, Auto está seleccionado. Otras unidades admitidas: milisegundo, segundo, minuto, hora, día, semana, mes y año.

Max bucket

Identifica lo(s) bucket(s) con el valor máximo de una métrica determinada en una sibling aggregation y devuelve el valor y la clave de lo(s) bucket(s). La métrica debe ser numérica y la agregación de hermanos debe ser del tipo multi-bucket. Minimum interval: Especifique un intervalo de redondeo mínimo. Por defecto, Auto está seleccionado. Otras unidades admitidas: milisegundo, segundo, minuto, hora, día, semana, mes y año.

Min bucket

Identifica lo(s) bucket(s) con el valor mínimo de una métrica dada en una sibling aggregation y devuelve el valor y la clave de los bucket(s). La métrica debe ser numérica y la sibling aggregation debe ser del tipo multi-bucket. Minimum interval: Especifique un intervalo de redondeo mínimo. Por defecto, Auto está seleccionado. Otras unidades admitidas: milisegundo, segundo, minuto, hora, día, semana, mes y año.

Sum bucket

Calcula la suma de todos los buckets de una métrica determinada en una sibling aggregation. La métrica debe ser numérica y la sibling aggregation debe ser de tipo multi-bucket.

Thanks for your feedback!
EDIT

Share your suggestions with us!
Click here and then [+ Submit idea]