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…
davy.ai
Sí, es posible formatear la salida de
"3.7600000000000002"
a"3.76"
. Elasticsearch proporciona una opción deformato
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 deformato
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.