No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Consultas de rango y agregaciones

14/16
Recursos

Aportes 8

Preguntas 0

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

  • Con "_source": indicamos los campos a mostrar.
  • Agrupa las consultas que de tipo range, que est谩n contenidas en un valor inicio (gte, gt) y fin (lte, lt)
  • Las agregaciones son m茅tricas que se devuelven sobre una consulta.
GET /indice/_search
{
    "aggs" : {
        "campoPromedio": { 
						"avg" : { 
							"field" : "campo", 
							"missing": 3.0
							} 
				},
        "campoMaxima": { "max" : { "field" : "campo" } },
        "campoMinima": { "min" : { "field" : "campo" } }
    }
}
  • aggs, indicar consulta de agregaciones.
  • avg, valor promedio; max, valor m谩ximo; min, valor m铆nimo
  • missing, establece valor por defecto a campos que que no tienen valor.

Por si no quieres ver los tipos con sus documentos en el salida del query dentro de un body JSON puedes insertar la keyword

// el size igual a cero nos quitara los documentos en la salida y solo nos mostrara el resultado del calculos que hagamos sobre ellos
"size": 0
"aggs": {...}

Buen dia, agradezco por favor alguien que me puedo orientar con lo siguiente:
Estoy usando kibana_sample_data_ecommerce , cuyos documentos tienen un mapeo como este.

Y quiero obtener un comportamiento diario b谩sico de los datos de esta manera:

Hasta donde s茅, tengo que dividir mis datos dos veces, primero diariamente y luego en el intervalo que deseo (1h en este caso). Despu茅s de eso, tengo que sumar las ocurrencias en ese rango de tiempo (el peque帽o) y hacer una suma acumulativa durante todo el d铆a para cada d铆a. Para obtener algo como esto:

Esta es la consulta que estoy realizando con rangos y agregaciones:

Despu茅s de hacer eso, solo tengo que obtener "鈥渆xtended stats鈥 (estad铆sticas extendidas) iterando la lista de horas para todos los d铆as, es decir:
.
Pero este 煤ltimo paso me est谩 volviendo loco porque este proceso me da un nested buckets (cubos anidados), para cada intervalo de tiempo 鈥** Entonces, la cuesti贸n es c贸mo puedo hacer una agregaci贸n de estad铆sticas extendida sobre los datos del mes, pero solo en cada ventana de tiempo todos los d铆as ?** Muchas gracias

Comparto mi query haciendo un AND de los ranges que quiero buscar usando los campos de calificacion y de fecha:

QUERY :

{
    // con la keyword _source le idremos excatly que campos queremos buscar dentro de nuestro query de respuesta
    "_source": ["nombre", "calificacion", "ultima_modificacion_plato1.fecha1"],
    // hacemos el query con el rango fijo de las calificaciones de un restaurante
    "query": {
        "bool":{
            "must": [
                {
                    "range": {
                        "calificacion": {"gt": 2.0, "lte": 6.0}
                    }
                },
                {
                    "range": {
                        "ultima_modificacion_plato1.fecha1": {"gt": "2018-01-01", "lte": "2020-12-31"}
                    }
                }
            ]
        }
    }
}
{
    "aggs": {
        "CalificacionPromedio": { "avg": {"field": "calificacion", "missing": 3.0} },
        "CalificacionMaxima": { "max": {"field": "calificacion"} },
        "CalificacionMinima": { "min": {"field": "calificacion"} }
    }
}
{
    "_source": ["nombre", "calification"],
    "query": {
        "range": {
            "calification": {
                "gt": 1.0,
                "lte": 5.0
            }
        }
    }
}

Consultas de rango
Devuelve documentos que contienen t茅rminos dentro de un rango proporcionado.

Range Queries - Elastic Search Documentation

Agregaciones
Una agregaci贸n es un indicador que permite interpretar nuestros datos y nos permiten responder preguntas del caso de negocio como por ejemplo:

驴Cu谩l es la puntuaci贸n promedio de los restaurantes entre el 2019 y el 2020?
驴Cu谩l es la categor铆a de restaurante mayoritaria?
驴Cual es el n煤mero de platos ofrecidos en promedio de los restaurantes?

Elasticsearch organiza las agregaciones en tres categor铆as:

  • 鈥淢etrics鈥 que calculan m茅tricas, como una suma o un promedio, a partir de valores de campo.
  • 鈥淏uckets鈥 que agrupan documentos en cubos, tambi茅n llamados bins, en funci贸n de valores de campo, rangos u otros criterios.
  • Pipelines" que toman entradas de otras agregaciones en lugar de documentos o campos.

Aggregations - Elastic Search Documentation

La sintaxis de las agregaciones es muy parecido a la sintaxis de mongodb.