我有一个json文件,其结构如下:
{"vhost": "8.8.8.8", "host": "8.8.8.8", "port": 80, "ip": "189.191.116.19", "host.latitude":"40.408599853515625","host.longitude":"-3.692199945449829"}我有一个logstash配置文件,如下所示:
input {
stdin {
type => "json"
}
}
filter{
json{
source => "message"
}
}
output {
stdout{}
}我想转换json记录,以便可以在ES和Kibana中使用geo_point类型。根据https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-geo-point-type.html的官方文档,纬度和经度字段必须采用如下格式:
"pin" : {
"location" : {
"lat" : 41.12,
"lon" : -71.34
}
}我的问题是,如何从logstash转换json输入,以便可以使用geo_point?我想我不能修改json结构本身,但也许我可以添加一个具有geo_point类型所需的位置estructure的新字段。
谢谢
发布于 2015-09-14 11:13:24
实现这一点的最简单方法是将两个字段host.latitude和host.longitude连接到另一个可以映射为geopoint as string的字段中。
您只需在您的json筛选器之后再添加一个mutate筛选器,如下所示:
filter{
json{
source => "message"
}
mutate {
add_field => { "location" => "%{host.latitude},%{host.longitude}" }
}
}因此,将创建location字段,您可以将其映射为映射中的geo_point类型。
https://stackoverflow.com/questions/32555966
复制相似问题