首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修改或添加来自logstash的json字段以在ElasticSearch和Kibana中使用geo_point

如何修改或添加来自logstash的json字段以在ElasticSearch和Kibana中使用geo_point
EN

Stack Overflow用户
提问于 2015-09-14 08:48:04
回答 1查看 3.9K关注 0票数 1

我有一个json文件,其结构如下:

代码语言:javascript
复制
{"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配置文件,如下所示:

代码语言:javascript
复制
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的官方文档,纬度和经度字段必须采用如下格式:

代码语言:javascript
复制
"pin" : {
        "location" : {
            "lat" : 41.12,
            "lon" : -71.34
        }
    }

我的问题是,如何从logstash转换json输入,以便可以使用geo_point?我想我不能修改json结构本身,但也许我可以添加一个具有geo_point类型所需的位置estructure的新字段。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2015-09-14 11:13:24

实现这一点的最简单方法是将两个字段host.latitudehost.longitude连接到另一个可以映射为geopoint as string的字段中。

您只需在您的json筛选器之后再添加一个mutate筛选器,如下所示:

代码语言:javascript
复制
filter{
    json{
        source => "message"
    }
    mutate {
       add_field => { "location" => "%{host.latitude},%{host.longitude}" }
    }
}

因此,将创建location字段,您可以将其映射为映射中的geo_point类型。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32555966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档