ElasticSearch映射类型Twitter坐标

时间:2014-02-12 04:09:38

标签: mongodb elasticsearch elasticsearch-plugin

无论如何,对于Spatial Search ElasticSearch的映射类型是这样的结构:

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

我想知道使用它来自MongoDB的geo-point类型,而不将它们分成lat和long字段,如现有的教程和示例。

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

由于

1 个答案:

答案 0 :(得分:0)

根据ElasticSearch documents,可以在映射中将lat和long数组作为地理点类型。

映射:

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 ] 
}

Geo-point数据类型的其他示例:

  • 地理位置表示为字符串,格式为:“lat,lon”
  • Geo-point表示为geohash
  • 地理位置表示为数组,格式为:[lon,lat]