elasticsearch Logstash/Elasticsearch保持将geoip自动映射到对象而不是geo_点,elasticsearch,logstash,logstash-grok,elasticsearch,Logstash,Logstash Grok" /> elasticsearch Logstash/Elasticsearch保持将geoip自动映射到对象而不是geo_点,elasticsearch,logstash,logstash-grok,elasticsearch,Logstash,Logstash Grok" />

elasticsearch Logstash/Elasticsearch保持将geoip自动映射到对象而不是geo_点

elasticsearch Logstash/Elasticsearch保持将geoip自动映射到对象而不是geo_点,elasticsearch,logstash,logstash-grok,elasticsearch,Logstash,Logstash Grok,我有一些以下格式的日志(我将IPs从公共改为私有,但你知道了): 然后,我使用以下模式浏览这些日志: grok { match => { "message" => "%{IPORHOST:clientip} \[%{HTTPDATE:timestamp}\] %{WORD:method} %{URIPATHPARAM:request} %{DATA:httpversion} %{NUMBER:response} %{NUMBER:duration}" } } geo

我有一些以下格式的日志(我将IPs从公共改为私有,但你知道了):

然后,我使用以下模式浏览这些日志:

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" }
        }
      }
    }
  }
}
但是,这并不理想,因为我希望能够选择显示所有索引及其各自的日期,然后选择要删除的内容和不删除的内容。 有没有什么方法可以在保留索引及其日期的同时实现正确的映射


任何帮助都将不胜感激

使用将geoip映射为geo_点的索引模式(如“mms-*”)值。

谢谢你,伙计!!我将官方文档中的内容与我的原始地图一起应用,到目前为止,它的效果非常好。
PUT mms18
{
  "mappings": {
    "properties": {
      "geoip": {
        "properties": {
          "location": { "type": "geo_point" }
        }
      }
    }
  }
}