无论如何,对于空间搜索ElasticSearch,映射类型如下结构:
"coordinates" : {
"type" : "Point",
"coordinates" : [
100.41404641,
5.37384675
]
},
我想使用它,因为它来自我的 MongoDB 用于地理点类型,而不会像现有教程和示例那样将它们拆分为经度和经度字段。
这种结构是Twitter API默认流式传输的结构,因此我可以将其保存为"位置":{ "lat": 100.41, "long": 5.34 } 到 MongoDB 中。但是在向我的数据库添加额外的字段或更改内容之前,我想确保无法在 ElasticSearch 中使用此结构进行空间搜索。
谢谢
根据 ElasticSearch 文档,映射中可以有一个纬度和经度数组作为地理点类型。
映射:
PUT my_index
{
"mappings": {
"my_type": {
"properties": {
"location": {
"type": "geo_point"
}
}
}
}
}
格式为 [lon, lat],请注意,此处的 lon/lat 顺序以符合 GeoJSON。
PUT my_index/my_type/4
{
"text": "Geo-point as an array",
"location": [ -71.34, 41.12 ]
}
地理点数据类型的其他示例:
- 以字符串表示的地理点,格式为:"lat,lon"
- 表示为地理哈希的地理点
- 以数组表示的地理点,格式为:[ lon, lat]