我有一些Elasticsearch的日志事件(弹性云)。这些事件通过摄取管道。对于某些事件,我使用(条件)GeoIP processor,它根据IP地址添加有关地理位置的信息。(条件)脚本处理器手动转换日志事件中出现的纬度、经度、国家名称、国家代码等,根据ECS(弹性公共模式)spec将其转换为Geo field。
当我尝试在Kibana中向Map可视化添加图层(例如文档图层或Choropleth图层)时,我得到一个错误Data view does not contain any geospatial fields
.
我指定的logs-*
数据视图包括具有geo字段的事件,例如
"geo": {
"continent_name": "Oceania",
"region_iso_code": "AU-NSW",
"city_name": "Sydney",
"country_iso_code": "AU",
"country_name": "Australia",
"region_name": "New South Wales",
"location": {
"lon": 151.2006,
"lat": -33.8715
}
}
我不确定geo字段或某些嵌套字段(无论是由GeoIP处理器添加到事件中,还是通过脚本处理器手动添加到事件中)是否使用错误的类型进行了索引?如果查看geo.location.lat
或geo.location.lon
字段的字段类型,则会得到以下结果:
"fields": {
"geo": {
"object": {
"type": "object",
"metadata_field": false,
"searchable": false,
"aggregatable": false
}
},
"geo.location": {
"object": {
"type": "object",
"metadata_field": false,
"searchable": false,
"aggregatable": false
}
},
"geo.location.lat": {
"float": {
"type": "float",
"metadata_field": false,
"searchable": true,
"aggregatable": true
}
}
}
我已经尝试了几件事,包括在我的GeoIP处理器中指定一个不同的目标字段(例如geox
),该字段将单独进行索引,但该字段最终具有相同的字段类型,并且在尝试创建Map可视化时仍然会出现Data view does not contain any geospatial fields
错误。
我怎么才能让它工作?
1条答案
按热度按时间abithluo1#
Elasticsearch的dynamic mapping无法检测地理空间字段。您需要手动将纬度和经度值Map为geo_point字段。
如果你不想重新索引你的数据,你可以创建一个runtime geo_point字段,它可以在Maps中使用(只要你是在更高的版本中,比如8.7)。