my mistake, i need to parse the resulting json using json filter. missed this part from the original post. here's working config :
if "src_internal_ip" in [tags] {
translate {
exact => true
regex => true
override => true
refresh_behaviour => "replace"
field => "[source][ip]"
destination => "geo_point"
dictionary_path => "./geo.yml"
}
json {
source => "geo_point"
target => "[source][geo]"
}
}
output:
"source" => {
"ip" => "10.5.181.74",
"geo" => {
"geoip" => {
"city_name" => "Jakarta",
"region_code" => "JK",
"longitude" => 106.822451,
"location" => {
"lat" => -6.196459,
"lon" => 106.822451
},
"country_name" => "Indonesia",
"country_code3" => "ID",
"latitude" => -6.196459,
"region_name" => "Jakarta",
"country_code2" => "ID",
"timezone" => "Asia/Jakarta",
"continent_code" => "NA"
}
}
thanks @ppafford for the post