# Es-5.0.0. range query for string field

**URL:** <https://discuss.elastic.co/t/es-5-0-0-range-query-for-string-field/66331>\
**Category:** Elasticsearch\
**Created:** [November 17, 2016, 6:42am UTC](https://discuss.elastic.co/t/es-5-0-0-range-query-for-string-field/66331 "2016-11-17T06:42:47Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![Hilal](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/hilal/32/7684_2.png) [@Hilal](https://discuss.elastic.co/u/Hilal)\
**Post date:** [November 17, 2016, 6:42am UTC](https://discuss.elastic.co/t/es-5-0-0-range-query-for-string-field/66331/1 "2016-11-17T06:42:47Z")

</div>

Hi,

I want to do query on ES. I use ES-5.0.0. AND Kibana-5.0.0.

My mapping:

```
PUT titub2/ihale/_mapping
{
  "properties": {
    "Fiyat" : {
      "type": "string"
    }
  }
}

```

and my query:

```
GET titub2/ihale/_search
{
  "query": {
    "bool" : {
   "filter": {
     "range" : {
    "Fiyat" : {
        "gte" : "1",
        "lt" : "4000"
    }
}
   }
    }
  }
}

```

It works but results are not right. Sample results:

"Fiyat": "114900,00",  
"Fiyat": "141,00",  
..

---

<div class="post-metadata">

**Author:** ![sreeram](https://avatars.discourse-cdn.com/v4/letter/s/b77776/32.png) [@sreeram](https://discuss.elastic.co/u/sreeram)\
**Post date:** [November 17, 2016, 6:47am UTC](https://discuss.elastic.co/t/es-5-0-0-range-query-for-string-field/66331/2 "2016-11-17T06:47:09Z")

</div>

"String" type is not supported in ES 5.0.  
[https://www.elastic.co/guide/en/elasticsearch/reference/current/string.html](https://www.elastic.co/guide/en/elasticsearch/reference/current/string.html)

Andalso,  
Any specific reason for why your performing Range Filter on a field which is "String" Type ?

Thanks,  
Sreeram

---

<div class="post-metadata">

**Author:** ![Christian\_Dahlqvist](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/christian_dahlqvist/32/4617_2.png) [@Christian\_Dahlqvist](https://discuss.elastic.co/u/Christian_Dahlqvist)\
**Post date:** [November 17, 2016, 6:49am UTC](https://discuss.elastic.co/t/es-5-0-0-range-query-for-string-field/66331/3 "2016-11-17T06:49:59Z")

</div>

As your field is mapped as text (string is deprecated in 5.0) that is the correct behaviour as "1" \< "114900,00" \< "141,00" \< "4" in string comparisons (it basically compares each character/digit from the front until the strings are no longer identical and not based on numeric value). You need to map this as a suitable [numeric datatype](https://www.elastic.co/guide/en/elasticsearch/reference/5.0/number.html) for the range query to work the way you expect it to.

---

<div class="post-metadata">

**Author:** ![Hilal](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/hilal/32/7684_2.png) [@Hilal](https://discuss.elastic.co/u/Hilal)\
**Post date:** [November 17, 2016, 6:57am UTC](https://discuss.elastic.co/t/es-5-0-0-range-query-for-string-field/66331/4 "2016-11-17T06:57:34Z")

</div>

Ok I understand. Thank you.  
Can I update this field? Because datas re-index it takes too long.

---

<div class="post-metadata">

**Author:** ![Christian\_Dahlqvist](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/christian_dahlqvist/32/4617_2.png) [@Christian\_Dahlqvist](https://discuss.elastic.co/u/Christian_Dahlqvist)\
**Post date:** [November 17, 2016, 6:58am UTC](https://discuss.elastic.co/t/es-5-0-0-range-query-for-string-field/66331/5 "2016-11-17T06:58:31Z")

</div>

Mappings of existing fields can not be updated and do require reindexing.

---

<div class="post-metadata">

**Author:** ![Hilal](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/hilal/32/7684_2.png) [@Hilal](https://discuss.elastic.co/u/Hilal)\
**Post date:** [November 17, 2016, 7:09am UTC](https://discuss.elastic.co/t/es-5-0-0-range-query-for-string-field/66331/6 "2016-11-17T07:09:14Z")

</div>

Ok However, I searched and found this link:  
[https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-put-mapping.html#updating-field-mappings](https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-put-mapping.html#updating-field-mappings)

...  
Updating field mappingseditIn general, the mapping for existing fields cannot be updated. There are some  
exceptions to this rule. For instance:  
new properties can be added to Object datatype fields.

new multi-fields can be added to existing fields.

doc\_values can be disabled, but not enabled.

the ignore\_above parameter can be updated.  
...

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [November 17, 2016, 7:12am UTC](https://discuss.elastic.co/t/es-5-0-0-range-query-for-string-field/66331/7 "2016-11-17T07:12:22Z")

</div>

Reindexing is fast with reindex API

---

<div class="post-metadata">

**Author:** ![Hilal](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/hilal/32/7684_2.png) [@Hilal](https://discuss.elastic.co/u/Hilal)\
**Post date:** [November 17, 2016, 7:55am UTC](https://discuss.elastic.co/t/es-5-0-0-range-query-for-string-field/66331/8 "2016-11-17T07:55:31Z")

</div>

OK.  
My field:  
"Fiyat": "141,00"  
This is a price .  
Shoul I do double type or scaled\_float type mapping?

---

<div class="post-metadata">

**Author:** ![Christian\_Dahlqvist](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/christian_dahlqvist/32/4617_2.png) [@Christian\_Dahlqvist](https://discuss.elastic.co/u/Christian_Dahlqvist)\
**Post date:** [November 17, 2016, 8:05am UTC](https://discuss.elastic.co/t/es-5-0-0-range-query-for-string-field/66331/9 "2016-11-17T08:05:35Z")

</div>

I believe scaled\_float is ideal for currency fields with a fixed set of decimals.

---

<div class="post-metadata">

**Author:** ![Hilal](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/hilal/32/7684_2.png) [@Hilal](https://discuss.elastic.co/u/Hilal)\
**Post date:** [November 17, 2016, 8:35am UTC](https://discuss.elastic.co/t/es-5-0-0-range-query-for-string-field/66331/10 "2016-11-17T08:35:11Z")

</div>

OK.  
Some data divided by commas (141,00) and Some data divided by point (14.5)  
What kind of mapping should I do in this case?

---

<div class="post-metadata">

**Author:** ![Christian\_Dahlqvist](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/christian_dahlqvist/32/4617_2.png) [@Christian\_Dahlqvist](https://discuss.elastic.co/u/Christian_Dahlqvist)\
**Post date:** [November 17, 2016, 9:19am UTC](https://discuss.elastic.co/t/es-5-0-0-range-query-for-string-field/66331/11 "2016-11-17T09:19:40Z")

</div>

I would recommend normalising this before indexing it.

---

<div class="post-metadata">

**Author:** ![Hilal](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/hilal/32/7684_2.png) [@Hilal](https://discuss.elastic.co/u/Hilal)\
**Post date:** [November 17, 2016, 9:24am UTC](https://discuss.elastic.co/t/es-5-0-0-range-query-for-string-field/66331/12 "2016-11-17T09:24:44Z")

</div>

Ok Thank you

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [December 15, 2016, 9:24am UTC](https://discuss.elastic.co/t/es-5-0-0-range-query-for-string-field/66331/13 "2016-12-15T09:24:51Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
