我有一个这种结构的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类型所需的位置结构 .
谢谢
1 回答
实现此目的的最简单方法是将两个字段
host.latitude
和host.longitude
连接到另一个可以映射为geopoint as string的字段 .您只需要在
json
过滤器后添加一个mutate
过滤器,如下所示:因此,将创建
location
字段,您可以在映射中将其映射为geo_point
类型 .