es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Elastic Search: ¿Cómo formatear la salida float de la agregación sum_bucket?

Utilizo Elastic Search para mi servicio de búsqueda y uso esta solicitud JSON para la agregación sum_bucket:

{
    "from": 0,
    "size": 0,
    "aggregations": {
        "aggr": {
            "type": "term",
            "field": "type.keyword",
            "size": 10,
            "order": {
                "myAggr2.value": "desc"
            },
            "aggregations": {
                "myAggr2": {
                    "type": "sum",
                    "field": "length"
                }
            }
        },
        "total_myAggr2": {
            "type": "sum_bucket",
            "buckets_path": "aggr>myAggr2"
        }
    },
    "types": [
        "cable"
    ]
}

En respuesta obtengo esto:

{
    "totalHits": 4,
    "tookInMillis": 1,
    "hits": [],
    "aggregations": {
        "total_myAggr2": {
            "value": "3.7600000000000002"
        },
        "aggr": {
            "sumOtherDocCount": 0,
            "buckets": [
                {
                    "key": "cable",
                    "count": 4,
                    "aggregations": {
                        "myAggr2": {
                            "value": "3.7600000000000002"
                        }
                    }
                }
            ]
        }
    }
}

¿Existe alguna posibilidad de formatear la salida de “3.7600000000000002” a “3.76”? Encontré el atributo “format” en la documentación de ES pero no para el formato de números…

Tags:  

Answer

  1. Avatar for davy.ai

    Sí, es posible formatear la salida de "3.7600000000000002" a "3.76". Elasticsearch proporciona una opción de formato para el formato de números en consultas de agregación.

    Para formatear la salida, puedes agregar la opción de "formato" a la agregación "myAggr2" de la siguiente manera:

    {
    "from": 0,
    "size": 0,
    "aggregations": {
    "aggr": {
    "type": "term",
    "field": "type.keyword",
    "size": 10,
    "order": {
    "myAggr2.value": "desc"
    },
    "aggregations": {
    "myAggr2": {
    "type": "sum",
    "field": "length",
    "format": "0.00" // agregar la opción de formato aquí
    }
    }
    },
    "total_myAggr2": {
    "type": "sum_bucket",
    "buckets_path": "aggr>myAggr2"
    }
    },
    "types": [
    "cable"
    ]
    }

    Con este cambio, el campo "value" para "myAggr2" y "total_myAggr2" se formateará como "3.76". Ten en cuenta que la opción de formato acepta patrones de formato de número estándar como se describe aquí: Patrón de formato decimal. En este ejemplo, se utiliza "0.00" para especificar dos decimales.

Comments are closed.