# Ruby code for array iteration

**URL:** https://discuss.elastic.co/t/ruby-code-for-array-iteration/137450
**Category:** Logstash
**Created:** [June 26, 2018, 2:21pm UTC](https://discuss.elastic.co/t/ruby-code-for-array-iteration/137450 "2018-06-26T14:21:03Z")
**Posts on this page:** 8
**Page:** 1

<div class="post-metadata">

### Author: ![Eswar\_Kumar\_Musiboin](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/eswar_kumar_musiboin/32/28623_2.png) [@Eswar\_Kumar\_Musiboin](https://discuss.elastic.co/u/Eswar_Kumar_Musiboin)
#### Post date: [June 26, 2018, 2:21pm UTC](https://discuss.elastic.co/t/ruby-code-for-array-iteration/137450/1 "2018-06-26T14:21:03Z")

</div>

```
ruby {
        code => "
            event.get('db_user_details').each_index do |i|
                if [db_user_details][i][country] == "india"
                	event.set('flagger', 'done')
                end
            end
            "
        }
    }

```

here i want array iteration , is this correct

---

<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 26, 2018, 2:23pm UTC](https://discuss.elastic.co/t/ruby-code-for-array-iteration/137450/2 "2018-06-26T14:23:57Z")

</div>

No,

```
            if [db_user_details][i][country] == "india"

```

isn't valid Ruby (you need to use event.get()). Why use each\_index in the first place? Try this

```nohighlight
event.get('db_user_details').each do |item|
  if item['country'] == 'india'
    event.set('flagger', 'done')
  end
end

```

---

<div class="post-metadata">

### Author: ![Eswar\_Kumar\_Musiboin](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/eswar_kumar_musiboin/32/28623_2.png) [@Eswar\_Kumar\_Musiboin](https://discuss.elastic.co/u/Eswar_Kumar_Musiboin)
#### Post date: [June 26, 2018, 2:29pm UTC](https://discuss.elastic.co/t/ruby-code-for-array-iteration/137450/3 "2018-06-26T14:29:09Z")

</div>

```
[2018-06-26T19:57:15,132][FATAL][logstash.runner] The given configuration is invalid. Reason: Expected one of #, {, } at line 22, column 30 (byte 602) after filter {
  jdbc_streaming {
    jdbc_driver_library => "C:\Users\TCML\Desktop\keycloak - iac\postgresql-9.4-1202.jdbc4.jar"
    jdbc_driver_class => "org.postgresql.Driver"
    jdbc_connection_string => "jdbc:postgresql://localhost:5432/example"
    jdbc_user => "postgres"
    jdbc_password => "root"
    statement => "SELECT country from user_deatils"
    target => "db_user_details"
    cache_expiration => 1800
  }

        mutate{
                add_field => {"flagger" => "def"}
        }
        ruby {
        code => "
            event.get('db_user_details').each do |item|
                                if item['country'] == "
[2018-06-26T19:57:15,143][ERROR][org.logstash.Logstash] java.lang.IllegalStateException: org.jruby.exceptions.RaiseException: 

```

@magnusbaeck i am getting like this please help this

---

<div class="post-metadata">

### Author: ![Eswar\_Kumar\_Musiboin](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/eswar_kumar_musiboin/32/28623_2.png) [@Eswar\_Kumar\_Musiboin](https://discuss.elastic.co/u/Eswar_Kumar_Musiboin)
#### Post date: [June 26, 2018, 2:32pm UTC](https://discuss.elastic.co/t/ruby-code-for-array-iteration/137450/4 "2018-06-26T14:32:22Z")

</div>

@magnusbaeck this is my configuration but i am getting error at the ruby code please help me

```
input {
  stdin{}
}
filter {
  jdbc_streaming {
    jdbc_driver_library => "C:\Users\TCML\Desktop\keycloak - iac\postgresql-9.4-1202.jdbc4.jar"
    jdbc_driver_class => "org.postgresql.Driver"
    jdbc_connection_string => "jdbc:postgresql://localhost:5432/example"
    jdbc_user => "postgres"
    jdbc_password => "root"
    statement => "SELECT country from user_deatils"
    target => "db_user_details"
    cache_expiration => 1800
  }

  	mutate{
		add_field => {"flagger" => "def"}
	}
	ruby {
        code => '
            event.get('db_user_details').each do |item|
  				if item['country'] == "india"
    				event.set('flagger', 'done')
  				end
			end
            '
        }
    }
}
output{
	stdout{ codec => rubydebug }
}
```

---

<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 26, 2018, 2:40pm UTC](https://discuss.elastic.co/t/ruby-code-for-array-iteration/137450/5 "2018-06-26T14:40:05Z")

</div>

Don't use double quotes inside a double-quoted string. I've updated my suggestion above.

---

<div class="post-metadata">

### Author: ![Eswar\_Kumar\_Musiboin](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/eswar_kumar_musiboin/32/28623_2.png) [@Eswar\_Kumar\_Musiboin](https://discuss.elastic.co/u/Eswar_Kumar_Musiboin)
#### Post date: [June 26, 2018, 2:53pm UTC](https://discuss.elastic.co/t/ruby-code-for-array-iteration/137450/6 "2018-06-26T14:53:42Z")

</div>

thank you, but the field flagger is not updating

---

<div class="post-metadata">

### Author: ![Eswar\_Kumar\_Musiboin](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/eswar_kumar_musiboin/32/28623_2.png) [@Eswar\_Kumar\_Musiboin](https://discuss.elastic.co/u/Eswar_Kumar_Musiboin)
#### Post date: [June 26, 2018, 2:57pm UTC](https://discuss.elastic.co/t/ruby-code-for-array-iteration/137450/7 "2018-06-26T14:57:13Z")

</div>

{  
"message" =\> "\r",  
"@timestamp" =\> 2018-06-26T14:55:15.552Z,

> "flagger" =\> "def",

"@version" =\> "1",  
"host" =\> "Eshwar",  
"db\_user\_details" =\> [  
[0] {  
"country" =\> "india "  
},  
[1] {  
"country" =\> "pakisatn "  
},  
[2] {  
"country" =\> "india "  
},  
[3] {  
"country" =\> "india "  
}  
]  
}

where ever india is there it must have flagger for them

---

<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 24, 2018, 2:57pm UTC](https://discuss.elastic.co/t/ruby-code-for-array-iteration/137450/8 "2018-07-24T14:57:18Z")

</div>

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