elasticsearch logstash geoip.location映射到geo_点不工作,elasticsearch,geolocation,logstash,elastic-stack,logstash-grok,elasticsearch,Geolocation,Logstash,Elastic Stack,Logstash Grok" /> elasticsearch logstash geoip.location映射到geo_点不工作,elasticsearch,geolocation,logstash,elastic-stack,logstash-grok,elasticsearch,Geolocation,Logstash,Elastic Stack,Logstash Grok" />

elasticsearch logstash geoip.location映射到geo_点不工作

elasticsearch logstash geoip.location映射到geo_点不工作,elasticsearch,geolocation,logstash,elastic-stack,logstash-grok,elasticsearch,Geolocation,Logstash,Elastic Stack,Logstash Grok,我可以在默认映射中看到geoip.location映射到geo_点类型: GET myserver:9200/_template { "logstash": { "order": 0, "version": 50001, "template": "logstash-*", "settings": { "index": { "refresh_interval": "5s"

我可以在默认映射中看到geoip.location映射到geo_点类型:

GET myserver:9200/_template
    {
      "logstash": {
        "order": 0,
        "version": 50001,
        "template": "logstash-*",
        "settings": {
          "index": {
            "refresh_interval": "5s"
          }
        },
        "mappings": {
          "_default_": {
            "dynamic_templates": [
              {
                "message_field": {
                  "path_match": "message",
                  "mapping": {
                    "norms": false,
                    "type": "text"
                  },
                  "match_mapping_type": "string"
                }
              },
              {
                "string_fields": {
                  "mapping": {
                    "norms": false,
                    "type": "text",
                    "fields": {
                      "keyword": {
                        "type": "keyword"
                      }
                    }
                  },
                  "match_mapping_type": "string",
                  "match": "*"
                }
              }
            ],
            "_all": {
              "norms": false,
              "enabled": true
            },
            "properties": {
              "@timestamp": {
                "include_in_all": false,
                "type": "date"
              },
              "geoip": {
                "dynamic": true,
                "properties": {
                  "ip": {
                    "type": "ip"
                  },
                  "latitude": {
                    "type": "half_float"
                  },
                  "location": {
                    "type": "geo_point"
                  },
                  "longitude": {
                    "type": "half_float"
                  }
                }
              },
              "@version": {
                "include_in_all": false,
                "type": "keyword"
              }
            }
          }
        },
        "aliases": {}
      }
    }
我在logstash过滤器中有这个,用于从我的一个字段中获取geoip数据:

geoip {
  source => "myField"
  add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ]
  add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}"  ]
}
mutate {
  convert => [ "[geoip][coordinates]", "float"]
}
但是,当它进入ES时,位置字段是一个“数字”

此外,如果我尝试使用kibana地图可视化,它会显示“无兼容字段”

为什么默认映射不起作用

编辑: 我还尝试了
geoip{source=>“myfield”}
,因为我的默认映射使用的是位置,而不是坐标,但这不起作用

我也摆脱了变异并尝试了这个,但它也不起作用:

geoip {
  source => "myfield"
  add_field => [ "[geoip][location]", "%{[geoip][longitude]}" ]
  add_field => [ "[geoip][location]", "%{[geoip][latitude]}"  ]
}

您可能只是有一个输入错误(第1点),但还包括一些其他需要注意的事项

  • 您正在日志存储中使用
    geoip.coordinates
    ,在
    \u映射中使用
    geoip.location
  • 您需要删除
    convert=>[“[geoip][coordinates]”和“float”]
    -这是错误的
  • 一旦ES中的某个字段中存在数据,如果不使用新映射重新索引数据(如果您处于开发阶段,通常意味着删除任何索引并重新插入数据),则无法将其转换为
    地理点
  • 在任何映射更改之后,kibana设置中有一个按钮用于重新加载映射
  • 问题是我不知道索引映射是如何工作的。此默认映射正在应用于与名称“logstash-*”匹配的索引,而我的索引名称与此不匹配


    将我的索引名更改为logstash myindex有效。

    输入错误在哪里?一个地方有坐标,另一个地方有位置。第2点也同样适用于我正在测试的所有注释,如果映射在默认情况下已经正确设置,可能我只需要geoip{source=>“myField”},其他什么都不需要--
    geoip
    默认情况下创建一个
    [geoip][location]
    字段,该字段是将贴图设置为
    地理点的类型。只要删除索引并重新创建它,所有这些都应该可以工作。(所以去掉你的
    mutate
    add_字段
    s)第4点对我来说就像一个符咒。除了那一步,我每一步都在做!非常感谢。请详细介绍一下这个解决方案:一个名为“logstash”的默认“遗留索引模板”正在使用这个技巧(至少现在是这样)。它用于索引模式“logstash-*”。这就是改名起作用的原因。您可以在“堆栈管理/索引管理/索引模板”中找到模板(通常
    www.your-es-server.com/app/Management/data/Index\u Management/Templates