0

无论如何要为空间搜索 ElasticSearch 映射类型这种结构:

"coordinates" : {
        "type" : "Point",
        "coordinates" : [
            100.41404641,
            5.37384675
        ]
    },

我想使用它,因为它来自我的 MongoDB 用于地理点类型,而不像现有教程和示例那样将它们拆分为 lat 和 long 字段。

这种结构是 Twitter API 默认流式传输的,因此我可以将其保存为 "location":{ "lat": 100.41, "long": 5.34 } 到 MongoDB 中。但在向我的数据库添加额外字段或更改内容之前,我想确保无法在 ElasticSearch 中使用此结构进行空间搜索。

谢谢

4

1 回答 1

0

根据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”
  • 地理点表示为 geohash
  • 地理点表示为数组,格式为:[ lon, lat]
于 2014-08-27T00:56:52.477 回答