# How to convert type for field like a.b in mutate plugin?

**URL:** https://discuss.elastic.co/t/how-to-convert-type-for-field-like-a-b-in-mutate-plugin/32236
**Category:** Logstash
**Created:** [October 15, 2015, 5:40am UTC](https://discuss.elastic.co/t/how-to-convert-type-for-field-like-a-b-in-mutate-plugin/32236 "2015-10-15T05:40:15Z")
**Posts on this page:** 7
**Page:** 1

<div class="post-metadata">

### Author: ![Enniu\_51](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/enniu_51/32/5310_2.png) [@Enniu\_51](https://discuss.elastic.co/u/Enniu_51)
#### Post date: [October 15, 2015, 5:40am UTC](https://discuss.elastic.co/t/how-to-convert-type-for-field-like-a-b-in-mutate-plugin/32236/1 "2015-10-15T05:40:15Z")

</div>

As I said here,

> [@Convert String to float failed](https://discuss.elastic.co/t/convert-string-to-float-failed/32232):
>
> My logstash config: filter { grok { match =\> {"stack\_trace" =\> "%{JAVACLASS:exception\_class}: \[%{DATA:error\_level}\]\[%{BASE10NUM:error\_code}\]-%{GREEDYDATA:error\_message}"} } grok { match =\> {"message" =\> "%{DATA:geo\_message}: carrier=%{DATA:carrier}, province=%{DATA:province}, city=%{DATA:city}, location=%{BASE10NUM:latitude},%{BASE10NUM:longitude}"} add\_tag =\> ["geo\_parse\_succeed"] } if "geo\_parse\_succeed" in [tags] { mutate { add\_field =\> {"geoip.location" =\>…

And now I change my config to:

```
if "geo_parse_succeed" in [tags] {
    mutate {
      add_field => {"geoip.location.lon" => "%{longitude}"}
      add_field => {"geoip.location.lat" => "%{latitude}"}
      convert => ["geoip.location.lon", "float"]
      convert => ["geoip.location.lat", "float"]
      convert => ["longitude", "float"]
      convert => ["latitude", "float"]
    }
  }

```

But I find:

```
  "_source": {
    "latitude": 45.7656666,
    "longitude": 126.6160584,
    "geoip.location.lon": "126.6160584",
    "geoip.location.lat": "45.7656666"
  }

```

It seems convert doesn't work for field like `a.b`. So, what should I do if I want to convert `a.b` to `float`?

---

<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: [October 15, 2015, 5:46am UTC](https://discuss.elastic.co/t/how-to-convert-type-for-field-like-a-b-in-mutate-plugin/32236/2 "2015-10-15T05:46:55Z")

</div>

[As documented](https://www.elastic.co/guide/en/logstash/current/event-dependent-configuration.html#logstash-config-field-references), subfield references have the form `[a][b]`.

---

<div class="post-metadata">

### Author: ![Enniu\_51](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/enniu_51/32/5310_2.png) [@Enniu\_51](https://discuss.elastic.co/u/Enniu_51)
#### Post date: [October 15, 2015, 5:51am UTC](https://discuss.elastic.co/t/how-to-convert-type-for-field-like-a-b-in-mutate-plugin/32236/3 "2015-10-15T05:51:00Z")

</div>

Really Thanks, but one more question:

Any difference between: `add_field => {"geoip.location.lon" => "%{longitude}"}` and `add_field => {"[geoip][location][lon]" => "%{longitude}"}`?

---

<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: [October 15, 2015, 6:09am UTC](https://discuss.elastic.co/t/how-to-convert-type-for-field-like-a-b-in-mutate-plugin/32236/4 "2015-10-15T06:09:11Z")

</div>

Yes. `a.b.c` is a field named "a.b.c" while `[a][b][c]` means an hiearchy of fields starting with "a" having a subfield "b" having a subfield "c".

---

<div class="post-metadata">

### Author: ![Enniu\_51](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/enniu_51/32/5310_2.png) [@Enniu\_51](https://discuss.elastic.co/u/Enniu_51)
#### Post date: [October 15, 2015, 6:22am UTC](https://discuss.elastic.co/t/how-to-convert-type-for-field-like-a-b-in-mutate-plugin/32236/5 "2015-10-15T06:22:13Z")

</div>

Really thanks! I changed my config to

```
mutate {
  add_field => {"[geoip][location][lon]" => "%{longitude}"}
  add_field => {"[geoip][location][lat]" => "%{latitude}"}
  convert => ["[geoip][location][lon]", "float" ]
  convert => ["[geoip][location][lat]", "float" ]
}

```

And it works.

But I still wonder why add\_field `a.b.c` then convert `a.b.c` doesn't work?

As you said add\_field `a.b.c` means add a field named `a.b.c`, and we convert the field which named `a.b.c` to float. I think it should be right.

---

<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: [October 15, 2015, 6:27am UTC](https://discuss.elastic.co/t/how-to-convert-type-for-field-like-a-b-in-mutate-plugin/32236/6 "2015-10-15T06:27:12Z")

</div>

> But I still wonder why add\_field a.b.c then convert a.b.c doesn't work?

Let's keep that discussion in the other thread:

> [@Convert String to float failed](https://discuss.elastic.co/t/convert-string-to-float-failed/32232/2):
>
> I also tried: convert =\> ["geoip.location", "float"] it doesn't works, either.

---

<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, 5:26am UTC](https://discuss.elastic.co/t/how-to-convert-type-for-field-like-a-b-in-mutate-plugin/32236/7 "2017-07-06T05:26:30Z")

</div>


