¿Cómo utilizar el BigDecimal de Elasticsearch en el código de Java?
Utilizo el lenguaje painless
para actualizar documentos. ¿Cómo se utiliza BigDecimal
para terminar esto? Utilizando Elasticsearch 6.8.1.
Enlace al Javadoc
de Script
:
JavaDoc de Script
El constructor de Script es:
public Script(ScriptType type,
java.lang.String lang,
java.lang.String idOrCode,
java.util.Map<java.lang.String, java.lang.Object> params)
Mi código es:
StringBuilder script = new StringBuilder();
Map<String, Object> params = new HashMap<>();
params.put("poundageRate", poundageRate.doubleValue());
script.append("ctx._source.poundage = ctx._source.amount * params.poundageRate;");
Script scriptObj = new Script(INLINE, DEFAULT_SCRIPT_LANG, script.toString(), params);
Mi pregunta es:
¿Cómo puedo hacer que ctx._source.amount * params.poundageRate
utilice el método multiply
de BigDecimal
y setScale
?
new BigDecimal("ctx._source.amount").multiply(new BigDecimal("params.poundageRate")).setScale(2, HALF_UP).stripTrailingZeros()
Muchas gracias, lo apreciaré.
davy.ai
Para utilizar el método BigDecimal multiply y setScale en un script sin problemas para actualizar un documento en Elasticsearch 6.8.1, reemplace la sección del script del código proporcionado con lo siguiente:
Explicación: