我是Elasticsearch的新手,我正在尝试使用Kibana可视化一些JSON数据 . 我遇到的麻烦是地理点映射格式 .
包含相关位置字段(lon / lat)的JSON对象如下所示:
"geoNetwork": {
"city": "Test City",
"cityId": "1234567",
"continent": "Americas",
"country": "Canada",
"latitude": "44.1234",
"longitude": "-63.6940",
"metro": "(not set)",
"networkDomain": "bellaliant.net",
"networkLocation": "bell aliant regional communications inc.",
"region": "Nova Scotia",
"subContinent": "Northern America"
},
这与Elasticsearch文档(https://www.elastic.co/guide/en/elasticsearch/reference/current/geo-point.html,第一个示例)中的地理点格式不匹配,因为经度和纬度不是geoNetwork(位置)对象中唯一的两个键 .
有没有办法定义地理点映射,以便我可以按原样使用JSON,还是必须修改JSON模式以使对象与文档中的某种地理点格式匹配?
1 回答
可悲的是,你问的是不可能的:(
Elasticsearch require GeoPoint / GeoLocation / ...适用于任何地理操作 .
所以,从那里开始,我将 recommend updating your json 与一个新的 GeoPoint 字段 .
如果由于某些技术原因,这是不可能的,虽然我自己没有使用它们,但我会查找 elasticsearch ingestion pipeline . 它的行为类似于SQL触发器 . 您可以在索引处理之前动态添加新字段,这意味着您可以在插入时从纬度,经度字段创建新的GeoPoint字段 .
GeoPoint :https://www.elastic.co/guide/en/elasticsearch/reference/current/geo-point.html
Ingestion Pipeline :https://www.elastic.co/guide/en/elasticsearch/reference/master/ingest.html