将地理点从MongoDB映射到Elasticsearch
我正在尝试使用Kibana将位置信息视为地理点。数据已经从Mongodb传输到ElasticSearch。Mongodb中的数据如下所示:将地理点从MongoDB映射到Elasticsearch,mongodb,elasticsearch,mapping,Mongodb,elasticsearch,Mapping,我正在尝试使用Kibana将位置信息视为地理点。数据已经从Mongodb传输到ElasticSearch。Mongodb中的数据如下所示: { "_id" : "1", "location" : "42.2734, -83.7133", "dst_ip" : "192.168.79.136", "src_ip" : "35.139.46.72" } 我发现了一个类似于我的,所以我在Mongodb中使用字符串类型,但在ElasticSearch中,“location”的值也是字符串 那么,如何映
{ "_id" : "1", "location" : "42.2734, -83.7133", "dst_ip" : "192.168.79.136", "src_ip" : "35.139.46.72" }
我发现了一个类似于我的,所以我在Mongodb中使用字符串类型,但在ElasticSearch中,“location”的值也是字符串
那么,如何映射应存储为地理点的值呢?您应该首先在ES中创建适当的映射,如smth
PUT my_index
{
"mappings": {
"my_type": {
"properties": {
"location": {
"type": "geo_point"
}
}
}
}
}
您需要这样做,因为ES不是无模式的,并且在索引时解释、分析和处理数据。在这之后,您可以用已有的格式对数据进行索引—用逗号分隔的字符串加上coords就可以了
有关更多详细信息,请参见谢谢您的回答。但是,我需要将数据从MongoDB同步到Elasticsearch,所以我不会使用您给出的PUT命令手动将1条记录推送到。此命令用于创建映射。每个索引生命周期运行一次。ES不像Mongo那样是无模式的。因此,您需要提前指定字段类型(在添加数据之前)。一旦这样做了,您就可以以任何方式重新索引/同步数据。如果不显式指定字段类型,ES会隐式地为您指定字段类型,ES会将“42.2734,-83.7133”视为简单字符串。我知道这不是您的问题,但位置是一个“字符串”
“位置”:“42.2734,-83.7133”
,这对MongoDB没有好处。请参见地理空间索引和查询文档中的。所以无论你读到什么信息都会把你引入歧途。