I am ready to create a pull request - its actually quite a simple change.
However, I cant find *any *tests for the existing BigDecimal support ... 
does that sound right?

-Nick



On Friday, 28 February 2014 12:09:00 UTC, mooky wrote:
>
> XContentBuilder has support for BigDecimal, but:
>
>    1. If you pass the source as a Map when indexing, the BigDecimal 
>    handling doesn't get invoked (
>    https://github.com/elasticsearch/elasticsearch/issues/5260).
>    2. The existing handling should delegate through to Jackson's handling 
>    of BigDecimal (which can be configured to serialise BigDecimal in a 
>    lossless fashion - I dont think that feature existed when I had to worry 
>    about it last)
>
> Looking at the code now, I think its actually an easy change - I will see 
> if I can create a pull request.
>
> -Nick
>
>
> On Wednesday, 26 February 2014 17:28:29 UTC, Jörg Prante wrote:
>>
>> ES accepts BigDecimal input. You can specify scale and rounding mode to 
>> format the BigDecimal. 
>>
>>
>> https://github.com/jprante/elasticsearch/commit/8ef8cd149b867e3e45bc3055dfd6da80e4e9c7ec
>>
>> Internally, BigDecimal is automatically converted to a JSON string if the 
>> number does not fit into double format. Because numbers are useful in 
>> Lucene for range searches, they have an advantage.
>>
>> But I agree, another option could be to enforce string conversion in any 
>> case, for example storing currency values as strings for financial 
>> services, without arithmetic operations in the index.
>>
>> Maybe the toEngineeringString() was not a smart decision and 
>> toPlainString() works better.
>>
>> So I would welcome improvements, or should I suggest one in a pull 
>> request?
>>
>> Jörg
>>
>>
>>
>> On Wed, Feb 26, 2014 at 6:05 PM, mooky <nick.mi...@gmail.com> wrote:
>>
>>> In financial services space, we almost never use float/double in our 
>>> domain - we always use BigDecimal.
>>>
>>> In elastic, I would like to be able to index/store BigDecimal in a 
>>> lossless manner (ie what I get back from _source has the same precision, 
>>> etc as what I put in).
>>>
>>> When I have had to preserve the json serialisation of BigDecimal, I have 
>>> usually had custom serialiser/deserialisers that printed it out as a json 
>>> number - but whose textual value was toPlainString(). When deserialising, 
>>> creating the BigDecimal with the string value (e.g. '42.5400') maintained 
>>> the precision that was originally serialised
>>> e.g.
>>>
>>> {
>>>   verySmallNumber : 0.00000000012000,
>>>   otherNumber : 42.5400
>>> }
>>>
>>> Perhaps elastic could index bigdecimal as a double - but store it in the 
>>> source in a lossless fashion.
>>> It would require a user setting, I guess, to treat all floating point 
>>> numbers as BigDecimal.
>>>
>>> Thoughts?
>>>
>>> -- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "elasticsearch" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to elasticsearc...@googlegroups.com.
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/elasticsearch/b54dfd5a-3a0e-4946-aa5f-28b3794a92ac%40googlegroups.com
>>> .
>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>
>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to elasticsearch+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elasticsearch/b8463a21-c997-4269-ae52-992caae88ced%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to