今天做地图定位展示,展示的是ApacheWeb服务器的访问日志文件中的来源IP。但是中间出现了报错环节,说是索引不能匹配到geo_point类型,实在是不懂这是在说什么,后来在网站找了方法就解决了。主要报错如下:

报错信息:

No Compatible Fields: The "logstash_apachelogs" index pattern does not contain any of the following field types: geo_point”

觉得很是奇怪,再来看看我的配置文件

input {redis {host => "172.16.0.54"port => 6379db => 1password => "123456"data_type => "list"key => "apache_filter_index"codec => json {charset => "UTF-8"}add_field => {"[@metadata][myfulltotal]" => "apacheaccess_log"}}
}filter {if [@metadata][myfulltotal] == "apacheaccess_log" {mutate {gsub => ["message","\\x","\\\x"]}if ( 'method":"HEAD' in [message] ) {drop{}}json {source => "message"add_field => {"[@metadata][direct_ip]" => "%{direct_ip}"}remove_field => "message"remove_field => "prospector"remove_field => "beat"remove_field => "host"remove_field => "input"remove_field => "source"remove_field => "offset"remove_field => "fields"remove_field => "@version"}date {match => ["timestamp","yyyy-MM-dd HH:mm:ss Z"]}mutate {split => ["client_ip",","]}mutate {replace => { "client_ip" => "%{client_ip[0]}"}}mutate {convert => ["body_bytes_sent","integer"]convert => ["total_bytes_sent","integer"]}if [client_ip] == "-" {if [@metadata][direct_ip] not in ["%{direct_ip}","-"]{mutate {replace => { "client_ip" => "%{direct_ip}" }}} else {drop {}}}geoip {source => "client_ip"target => ["geoip"]add_field => ["[geoip][coordinates]", "%{[geoip][longitude]}"]add_field => ["[geoip][coordinates]", "%{[geoip][latitude]}"]}mutate {convert => ["[geoip][coordinates]","float"]}mutate {remove_field => ["direct_ip"]remove_field => ["timestamp"]}}
}
output {if [@metadata][myfulltotal] == "apacheaccess_log" {elasticsearch {hosts => ["172.16.0.51:9200"]index => "logstash_apachelogs"}}
}

看上去都是没有问题的,只要是按照这个格式来写,都没有什么错误。只是在报错信息中看出geo的location类型不是geo_point类型的,那我们通过GET命令查看一下mapping

[root@ELK-chaofeng07 httpd]# curl -XGET http://172.16.0.51:9200/logstash_apachelogs/_mapping/
{"logstash-apachelogs":{"mappings":{"_default_":{"dynamic_templates":,{"string_fields":{"match":"*","m,"@version":{"type":"keyword"},"geoip":{"dynamic":"true","properties":{"ip":{"type":"ip"},"latitude":{"type":"half_float"},"location":{"type":"geo_point"},"longitude":{"type":"half_float"}}}}},"doc":{"dynamic_templates":[{"message_field":{"path_match":"message","match_mapping_type":"string","mapping":{"norms":false,"type":"text"}}},{"string_fields":{"match":"*","match_mapping_type":"string","mapping":{"fields":{"keyword":{"ignore_above":256,"type":"keyword"}},"norms":false,"type":"text"}}}],"properties":{"@timestamp":{"type":"date"},"@version":{"type":"keyword"},"body_bytes_sent":{"type":"long"},"client_ip":{"type":"text","norms":false,"fields":{"keyword":{"type":"keyword",},"continent_code":{"type":"text","norms":false,"fields":{"keyword":{"type":"keyword","ignore_above":256}}},"coordinates":{"type":"float"},"country_code2":{"type":"text","norms":false,"fields":{"keyword":{"type":"keyword","ignore_above":256}}},"country_code3":{"type":"text","norms":false,"fields":{"keyword":{"type":"keyword","ignore_above":256}}},"country_name":{"type":"text","norms":false,"fields":{"keyword":{"type":"keyword","ignore_above":256}}},"ip":{"type":"ip"},"latitude":{"type":"half_float"},"location":{"type":"float"},"longitude":{"type":"half_float"},"region_code":}}}}}}}

看的出来我们此时的location是float类型的。所以如何将它变成geo_point类型是我们的解决目标方法

我们分析一下原因:

  索引格式为logstash_apachelogs日志文件由logstash输出到Elasticsearch;在 elasticsearch 中,所有的数据都有一个类型,什么样的类型,就可以在其上做一些对应类型的特殊操作。geo信息中的location字段是经纬度,我们需要使用经纬度来定位地理位置;在 elasticsearch 中,对于经纬度来说,要想使用 elasticsearch 提供的地理位置查询相关的功能,就需要构造一个结构,并且将其类型属性设置为geo_point。
解决方法:

  Elasticsearch支持给索引预定义设置和mapping,其实ES中已经有一个默认预定义的模板,我们只要使用预定的模板即可。我们要想使用预定义的模板,那么索引名必须匹配 logstash-* 的索引才会应用这个模板,由于我们在logstash中使用的是logstash_*的索引方式,因此并没有匹配默认模板,所以只需要修改一下索引名即可。然后我们就可以看到map不再报这个错误了。

所以说这是个相当不起眼的错误,但是引发了这个大的问题,搞的让人很懵比,所以接下来我们得好好研究一下mapping是什么,

转载于:https://www.cnblogs.com/FengGeBlog/p/10508760.html

Kibana中的Coordinate Map地图报索引错误的问题相关推荐

  1. ajax的post请求出现403错误,如何解决Django中ajax发送post请求报403错误CSRF验证失败的问题...

    如何解决Django中ajax发送post请求报403错误CSRF验证失败的问题 发布时间:2021-02-05 14:23:57 来源:亿速云 阅读:92 作者:小新 这篇文章主要介绍了如何解决Dj ...

  2. 在Python Shell中输入print 'hello'总是报语法错误

    在Python3.1的shell中输入print 'hello',居然报语法错误!!!(SyntaxError: invalid syntax) 后来查询后发现,要这样输入: print('hello ...

  3. MVC中使用jquery uploadify上传图片报302错误

    使用jquery uploadify上传图片报302错误研究了半天,发现我上传的action中有根据session判断用户是否登录,如果没有登录就跳到登陆页,所以就出现了302跳转错误.原来更新了fl ...

  4. fragment 中调用getactivity()的时候报 nullpoint错误

    好久没记录了,最近好一顿折腾,终于要结束了.今天发现了一个问题: 在fragment中用到getactivity()竟然报nullpoint错误.当时看了log吓着了,这也能报null,百度一通,原来 ...

  5. MAP地图报错Unable to preventDefault inside passive event listener invocation.

    地图每次鼠标点击.移入移出都会报 Unable to preventDefault inside passive event listener invocation. 不管是对接什么地图都会报错 原因 ...

  6. 阿里云上的k8s中某些节点的pod报dns错误,dns解析失败,bad address

    php报错为:php_network_getaddresses:getaddrinfo failed 问题可能出现的位置 这类问题对应的都是dns解析错误.这里我的错误是因为我连接阿里云数据库用的域名 ...

  7. python token post403原因_Django中ajax发送post请求 报403错误CSRF验证失败解决方案

    前言 今天学习Django框架,用ajax向后台发送post请求,直接报了403错误,说CSRF验证失败:先前用模板的话都是在里面加一个 {% csrf_token %} 就直接搞定了CSRF的问题了 ...

  8. Idea中内置Translation插件报“翻译错误”,解决方式!!!

    问题 我的编程软件一直是Idea,Idea是我心中YYDS. 使用的版本是2020.4,最近在使用idea内置的Translation翻译插件的时候,一直报翻译失败的错误.一开始以为是我的网络问题,从 ...

  9. selenium中,运行测试用例,报NosuchElementException错误,用try --except 捕获异常

    try: ele=driver.find_element_by_name('kw') except  NosuchElementException as msg: print '查找元素异常原因:%s ...

最新文章

  1. 大话设计模式(十一 三层架构,分层开发)
  2. Android实现ListView(1)
  3. python 时分秒毫秒_第一篇:Python处理时间日期
  4. mysql安装之后怎么进入_MySQL常规练习 .MySQL安装成功后的进入方式
  5. 曼联球星普巴来罗!POGMOJI APP即将上市
  6. vb.net多线程例子
  7. PHP WEB程序设计信息表,WEB程序设计(PHP)2020知到答案全套
  8. java虚拟机JVM内存不够,OutOfMemorry Error
  9. 雍正王朝里康熙临终予四爷言
  10. 《算法竞赛进阶指南》0.8总结与练习(1)
  11. MxNet系列——Windows上安装MxNet
  12. mysql积累--面试题
  13. Lumerical官方案例、FDTD时域有限差分法仿真学习(十七)——Y分支功分器
  14. STEP标准执行方法-ISO-10303-21
  15. ESP8266,电脑作为TCP SERVER,8266发数据给电脑
  16. 玩转代码|异步加载 CSS 的最简单方法
  17. 根据交换机端口分配固定地址的方法
  18. python抖音github_利用python 下载抖音上流行音乐
  19. 中国研修网计算机培训心得,中国教师研修网远程培训心得体会
  20. ABB机器人编程基础_手动示教+记录+修改点位数据的具体方法和步骤示例

热门文章

  1. Qt下继承于QObject创建的线程
  2. Python divmod 函数 - Python零基础入门教程
  3. 不同类型的变量与零值比较的方法
  4. 语言速算24点的小窍门_4秒钟1道题!12岁少年三夺24点大赛冠军
  5. python中plot和bar要求的格式不一样_在Python中matplotlib中匹配的图形大小,包括和不包含make_axes_locatable- divider colorbars...
  6. ofdm原理_OFDM技术简介
  7. 什么叫冷备用状态_新密5P加工中心冷油机生产厂家电话【瀚信德】
  8. mysql的增_MySQL之增_insert-replace
  9. flash 异常修复:QQ 的 flash 图标显示异常?QQ 秀、表情加载异常?一招解决
  10. 百度地图API如何申请?(自认为比较详细,如解决了你的问题请收藏、点赞、关注!)