# Newbee with logstash an JSON

**URL:** <https://discuss.elastic.co/t/newbee-with-logstash-an-json/52714>\
**Category:** Logstash\
**Created:** [June 14, 2016, 9:52am UTC](https://discuss.elastic.co/t/newbee-with-logstash-an-json/52714 "2016-06-14T09:52:50Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![paracetamol](https://avatars.discourse-cdn.com/v4/letter/p/4af34b/32.png) [@paracetamol](https://discuss.elastic.co/u/paracetamol)\
**Post date:** [June 14, 2016, 9:52am UTC](https://discuss.elastic.co/t/newbee-with-logstash-an-json/52714/1 "2016-06-14T09:52:50Z")

</div>

Hi,  
I'm polling a JSON with th following config file:

input {  
http\_poller {  
urls =\> {  
myresource =\> "[http://192.168.32.40/json/daily.json](http://192.168.32.40/json/daily.json)"  
}  
request\_timeout =\> 60  
interval =\> 60  
codec =\> "json"  
}  
}

output {  
elasticsearch {}  
stdout{codec =\> rubydebug}  
}

It works but all data as cast as string: i thinh it's beacause all numeric values are between quote.

This is stdout:

{  
"title" =\> "METEO",  
"location" =\> "France",  
"time" =\> "14-Jun-2016 09:44",  
"lat" =\> "43° 42.06' N",  
"lon" =\> "001° 02.34' E",  
"alt" =\> "213 metres",  
"hardware" =\> "WMRS200",  
"uptime" =\> "12 days, 20 hours, 27 minutes",  
"serverUptime" =\> "10 days, 1 hour, 8 minutes",  
"weewxVersion" =\> "3.4.0",  
"stats" =\> {  
"current" =\> {  
"outTemp" =\> "19.7",  
"windchill" =\> "19.7",  
"heatIndex" =\> "19.7",  
"dewpoint" =\> "10.9",  
"humidity" =\> "57",  
"insideHumidity" =\> "45",  
"barometer" =\> "1008.6",  
"barometerTrendDelta" =\> "3 hours",  
"barometerTrendData" =\> "-1.4 mbar",  
"windSpeed" =\> "7",  
"windDir" =\> "246",  
"windDirText" =\> "OSO",  
"windGust" =\> "15",

So, how can i filter values to convert string to float ??

Thank you

---

<div class="post-metadata">

**Author:** ![magnusbaeck](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/magnusbaeck/32/44943_2.png) [@magnusbaeck](https://discuss.elastic.co/u/magnusbaeck)\
**Post date:** [June 14, 2016, 8:07pm UTC](https://discuss.elastic.co/t/newbee-with-logstash-an-json/52714/2 "2016-06-14T20:07:25Z")

</div>

Use the mutate filter's convert option.

---

<div class="post-metadata">

**Author:** ![paracetamol](https://avatars.discourse-cdn.com/v4/letter/p/4af34b/32.png) [@paracetamol](https://discuss.elastic.co/u/paracetamol)\
**Post date:** [June 15, 2016, 6:32am UTC](https://discuss.elastic.co/t/newbee-with-logstash-an-json/52714/3 "2016-06-15T06:32:30Z")

</div>

Hi Magnus,

I have already try to cast in my case outTemp :

filter {  
mutate {  
convert =\> { "outTemp" =\> "float" }  
}  
}

But no effect ... always string in kabana

---

<div class="post-metadata">

**Author:** ![magnusbaeck](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/magnusbaeck/32/44943_2.png) [@magnusbaeck](https://discuss.elastic.co/u/magnusbaeck)\
**Post date:** [June 15, 2016, 7:39am UTC](https://discuss.elastic.co/t/newbee-with-logstash-an-json/52714/4 "2016-06-15T07:39:55Z")

</div>

That's probably because the field's mapping in ES is still a string. Mappings can't be changed for an index without reindexing. Assuming you have the default time-series indexes you can just wait until the next day. (But you can already verify that the raw document in ES has `outTemp` as a number rather than a string.)

---

<div class="post-metadata">

**Author:** ![paracetamol](https://avatars.discourse-cdn.com/v4/letter/p/4af34b/32.png) [@paracetamol](https://discuss.elastic.co/u/paracetamol)\
**Post date:** [June 17, 2016, 6:34am UTC](https://discuss.elastic.co/t/newbee-with-logstash-an-json/52714/5 "2016-06-17T06:34:10Z")

</div>

Hi Magnus,

I have wait next day:  
Looking in the metadata with head 😞 :

"outTemp": {

```
"fielddata": {
    "format": "disabled"
},
"norms": {
    "enabled": false
},
"type": "string",
"fields": {
    "raw": {
        "ignore_above": 256,
        "index": "not_analyzed",
        "type": "string"
    }
}
```

---

<div class="post-metadata">

**Author:** ![paracetamol](https://avatars.discourse-cdn.com/v4/letter/p/4af34b/32.png) [@paracetamol](https://discuss.elastic.co/u/paracetamol)\
**Post date:** [June 17, 2016, 6:37am UTC](https://discuss.elastic.co/t/newbee-with-logstash-an-json/52714/6 "2016-06-17T06:37:00Z")

</div>

just FYI i'm runing logstash et elasticsearch on Windows...

---

<div class="post-metadata">

**Author:** ![magnusbaeck](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/magnusbaeck/32/44943_2.png) [@magnusbaeck](https://discuss.elastic.co/u/magnusbaeck)\
**Post date:** [June 17, 2016, 7:13am UTC](https://discuss.elastic.co/t/newbee-with-logstash-an-json/52714/7 "2016-06-17T07:13:04Z")

</div>

That's surprising. But what does the raw document look like? Specifically, what data type does the `outTemp` field have? Using a `stdout { codec => rubydebug }` makes it easy to check this.

---

<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:** [July 6, 2017, 4:52am UTC](https://discuss.elastic.co/t/newbee-with-logstash-an-json/52714/8 "2017-07-06T04:52:19Z")

</div>


