# Title case conversion in logstash filter-mutate

**URL:** https://discuss.elastic.co/t/title-case-conversion-in-logstash-filter-mutate/119443
**Category:** Logstash
**Created:** [February 12, 2018, 9:54am UTC](https://discuss.elastic.co/t/title-case-conversion-in-logstash-filter-mutate/119443 "2018-02-12T09:54:42Z")
**Posts on this page:** 8
**Page:** 1

<div class="post-metadata">

### Author: ![sujeetKumar](https://avatars.discourse-cdn.com/v4/letter/s/6de8d8/32.png) [@sujeetKumar](https://discuss.elastic.co/u/sujeetKumar)
#### Post date: [February 12, 2018, 9:54am UTC](https://discuss.elastic.co/t/title-case-conversion-in-logstash-filter-mutate/119443/1 "2018-02-12T09:54:43Z")

</div>

Env- Elastic 5.5

Requirement: For Kibana Region map, Country Name is required in Title case.

So, I can do this in logstash. I have tried below statement:

filter  
{  
mutate {  
gsub =\> [  
# replace all first character of word with uppercase(Title Case)  
"affected country", "(\w)(\w+)", "\U$1\L$2"  
]  
}  
}

**But I am getting output as \U$1\L$2 \U$1\L$2 which is a regex converted to string**

Any suggestion how to achieve this

---

<div class="post-metadata">

### Author: ![paz](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/paz/32/28003_2.png) [@paz](https://discuss.elastic.co/u/paz)
#### Post date: [February 12, 2018, 10:21am UTC](https://discuss.elastic.co/t/title-case-conversion-in-logstash-filter-mutate/119443/2 "2018-02-12T10:21:12Z")

</div>

You can use Ruby's [capitalize method](https://ruby-doc.org/core-1.9.3//String.html#method-i-capitalize) to avoid regex patterns, like so:

```auto
filter {
    ruby {
        code => "
            event.set('affected country', event.get('affected country').capitalize)
        "
    }
}
```

---

<div class="post-metadata">

### Author: ![sujeetKumar](https://avatars.discourse-cdn.com/v4/letter/s/6de8d8/32.png) [@sujeetKumar](https://discuss.elastic.co/u/sujeetKumar)
#### Post date: [February 13, 2018, 10:12am UTC](https://discuss.elastic.co/t/title-case-conversion-in-logstash-filter-mutate/119443/3 "2018-02-13T10:12:38Z")

</div>

This statement will capitalize all the characters. I want title case . for example:

"i want a title case conversion of sentence."  
to  
"I Want A Title Case Conversion Of Sentence."

Because, Kibana country names for region map is required in such format.  
It won't accept "united kingdom" OR "UNITED KINGDOM".  
So, I need to convert it as "United Kingdom".

We can do this with Kibana scripted fields. But that is not working with Region Map.

---

<div class="post-metadata">

### Author: ![paz](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/paz/32/28003_2.png) [@paz](https://discuss.elastic.co/u/paz)
#### Post date: [February 13, 2018, 10:25am UTC](https://discuss.elastic.co/t/title-case-conversion-in-logstash-filter-mutate/119443/4 "2018-02-13T10:25:13Z")

</div>

Ruby's capitalize surely does not make uppercase all characters ([example](https://repl.it/repls/UnfortunateEuphoricRevisioncontrol)) . I also tested it in Logstash 5.6.5 and it works as intended. What version of Logstash are you using?

Anyhow, if you want to capitalize each word in a sentence and not a single word, use this.

```auto
filter {
    ruby {
        code => "
            event.set('affected country', event.get('affected country').split(' ').map(&:capitalize).join(' '))
        "
    }
}
```

---

<div class="post-metadata">

### Author: ![sujeetKumar](https://avatars.discourse-cdn.com/v4/letter/s/6de8d8/32.png) [@sujeetKumar](https://discuss.elastic.co/u/sujeetKumar)
#### Post date: [February 17, 2018, 7:54am UTC](https://discuss.elastic.co/t/title-case-conversion-in-logstash-filter-mutate/119443/5 "2018-02-17T07:54:57Z")

</div>

Yeah Paz, It worked like a charm. I think i need to get more deep in ruby queries. Thank you very much.

---

<div class="post-metadata">

### Author: ![Karthik\_Saravanan](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/karthik_saravanan/32/28858_2.png) [@Karthik\_Saravanan](https://discuss.elastic.co/u/Karthik_Saravanan)
#### Post date: [March 13, 2018, 8:04am UTC](https://discuss.elastic.co/t/title-case-conversion-in-logstash-filter-mutate/119443/6 "2018-03-13T08:04:54Z")

</div>

How to put field name in this script?

---

<div class="post-metadata">

### Author: ![sujeetKumar](https://avatars.discourse-cdn.com/v4/letter/s/6de8d8/32.png) [@sujeetKumar](https://discuss.elastic.co/u/sujeetKumar)
#### Post date: [March 29, 2018, 12:31pm UTC](https://discuss.elastic.co/t/title-case-conversion-in-logstash-filter-mutate/119443/7 "2018-03-29T12:31:52Z")

</div>

> [@paz](#):
>
> affected country

Like I kept "affected country"

---

<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: [April 26, 2018, 12:32pm UTC](https://discuss.elastic.co/t/title-case-conversion-in-logstash-filter-mutate/119443/8 "2018-04-26T12:32:04Z")

</div>

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