Logstash / Elasticsearch始终将geoip自动映射到对象,而不是geo_point

时间:2019-11-20 16:26:39

标签: elasticsearch logstash logstash-grok

我有一些格式如下的日志(我将IP从公共更改为私有,但您明白了)

192.168.0.1 [20/Nov/2019:16:09:28 +0000] GET /some_path HTTP/1.1 200 2 2
192.168.0.2  [20/Nov/2019:16:09:28 +0000] GET /some_path HTTP/1.1 200 2 2

然后我使用以下模式查看这些日志:

grok { match => { "message" => "%{IPORHOST:clientip} \[%{HTTPDATE:timestamp}\] %{WORD:method} %{URIPATHPARAM:request} %{DATA:httpversion} %{NUMBER:response} %{NUMBER:duration}" } }
         geoip { source => "clientip" }

在我的输出部分,我有以下代码:

else  if "host.name" in [host][name]{ #if statement with the hostname
  elasticsearch {
    hosts => "localhost:9200"
    manage_template => false
    index => "mms18-%{+YYYY.MM.dd}"
    user => "admin-user"
    password => "admin-password"
  }

}

问题是,当我去Kibana时,geoip.location被映射为一个对象,并且不能在地图仪表板上使用它。 由于索引的名称每天都会更改,因此我无法手动放置正确的geoip映射,因为我每天都必须这样做。

我认为可以部分解决该问题的一种解决方案是从Logstash输出的索引中删除日期,因此它的常量索引为“ mms18”,然后在Kibana管理控制台上使用它:

PUT mms18
{
  "mappings": {
    "properties": {
      "geoip": {
        "properties": {
          "location": { "type": "geo_point" }
        }
      }
    }
  }
}

但是,这不是理想的选择,因为我想选择显示所有索引及其相应日期的索引,然后选择要删除的内容以及不删除的内容。 有什么办法可以实现正确的映射,同时还保留索引及其日期?

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

使用将geoip映射为geo_point的index template(具有index_patterns的值,例如“ mms-*”)。

相关问题