首页 > 解决方案 > 在 Elastic 中添加地理点

问题描述

我使用 ELK 和 filebeat。我发送了很多带有不同字段的日志。

日志存储配置:

input {
    beats {
      port => 5044
      include_codec_tag => false
    }
}

filter {
  if [type] == "json" {
    json {
      source => "message"
      target => "msg"
    }
    mutate {
      remove_field => ["msg.ecs.version", "ecs.version", "@version"]
    }
  }
  if [type] != "json" {
    grok {
      match => {
        message => ["time=\"%{TIMESTAMP_ISO8601:time}\""]
        }
      }
    date {
      match => [ "time", "YYYY-MM-dd'T'HH:mm:ssZZ"]
      target => "time"
    }
  }
}

output {
  elasticsearch {
    hosts => ["elasticsearch:9200"]
    sniffing => true
    manage_template => false
    index => "%{[source][project]}-%{[source][application]}-%{+YYYY.MM.dd}"
  }
}

我的一些消息包含位置

{
"location": {
    "lat": 11.11,
    "lon": 22.22
  }
}

在弹性中,我可以看到我的位置(msg.location.latmsg.location.lon),但我不知道如何将我的位置转换为 geo_point。据我了解,当前索引映射是由 logstash 插件或默认模板通过弹性搜索创建的。我应该写什么以及在哪里使用我的位置作为geo_point?

标签: geolocationlogstashdata-conversionfilebeatelk

解决方案


推荐阅读