我已经让logstash处理日志,并将其上传到作为服务运行在AWS上的opensearch示例。
我已经在我的logstash中添加了一个geoip过滤器来将IP处理为地理数据。根据文档,geoip过滤器应该生成一个location
字段,该字段包含lon
和lat
,并且应该被识别为geo_point
类型,然后可以用来填充Map可视化。
我已经尝试了几个小时了,但是opensearch总是把location
字段分成数字location.lon
和location.lat
,而不是把location
识别为geo_point
,因此我不能把它用于Map可视化。
下面是我的logstash配置:
input {
file {
...
codec => json {
target => "[log_message]"
}
}
}
filter {
...
geoip {
source => "[log_message][forwarded_ip_address]"
}
}
output {
...
opensearch {
...
ecs_compatibility => disabled
}
}
我的opensearch示例上的模板是标准模板,所以它确实包含以下内容:
"geoip": {
"dynamic": true,
"properties": {
"ip": {
"type": "ip"
},
"latitude": {
"type": "half_float"
},
"location": {
"type": "geo_point"
},
"longitude": {
"type": "half_float"
}
}
},
我不确定这是否相关,但AWS OpenSearch要求ECS兼容性设置为disabled
,我照做了。
有人在AWS OpenSearch上成功地做到了这一点吗?
1条答案
按热度按时间fsi0uk1n1#
在获取数据之前,你有没有尝试过在索引中将位置字段设置为geo_point类型?我不认为opensearch会自动检测到geo_point类型。