I hate to bump this post, but I would really appreciate if anyone has any 
input regarding this.

Regards,

Nils-Helge Garli Hegvik

On Tuesday, November 25, 2014 4:20:49 PM UTC+1, [email protected] wrote:
>
> We have a mapping where one of the fields is an integer, but we want to 
> change this to a double. We want to avoid re-indexing, since there will be 
> a lot of documents at migration time. Hence, we were considering using a 
> "multi_field" (now apparently deprecated, but I guess the same applies for 
> the "fields" of a property) for this scenario, where the field is both 
> treated as an integer and a double. This means that on the day of 
> migration, all the old documents will only have the integer value set, and 
> all new documents will have the double value set. In our code, we will only 
> treat this value as a double. We have been doing some testing, and it seems 
> like it should work, but I would like to confirm our findings as expected 
> rather than "by chance". Let's call the field "the_field", and the double 
> property "double", like this:
>
> "the_field": {
>     "type": "integer",
>      "fields": {
>          "double": {
>              "type": "double"
>           }
>      }
> } 
>
> - Without changing our indexing code, when writing a double value to 
> "the_field", the value is automatically written to the field as a double. 
> When fetching the document back, the value of "the_field" is a double. New 
> and old documents looks the same. Old documents have integer values and new 
> documents have the double values for "the_field". I would expect new 
> documents to have "the_field.double" in the result instead, but this does 
> not seem to be the case (which is good for us, if that is intended).
> - When querying "the_field", say with a range query, both old and new 
> documents appear in the result, but the double part of the value in the new 
> documents are ignored. So 2.534 is treated as the value 2 in the range (or 
> in sorting). This means that if the range is "lte: 2", then even double 
> values up to < 3 are included in the range.
> - When querying "the_field.double", say with a range query both old and 
> new documents appear in the result, and the values from both old and new 
> documents are treated as double values, as opposed to the previous example. 
> So if the range is "lte: 2", then only integer _and_ double values < 2 are 
> included in the range.
>
> Are these observations correct, and as expected? Or is it a "side effect" 
> of some kind that we should not rely upon? And I assume the rules for 
> queries also applies to aggregations? If this is in fact expected behavior, 
> is it possible to "alias" "the_field.double" to "the_field" in queries, so 
> it is by default treated as the double value? 
>
> Regards,
>
> Nils-Helge Garli Hegvik
>

-- 
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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elasticsearch/52160e2d-0c9b-4f81-8a1d-e0e2b9afd437%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to