[location]的映射定义具有不受支持的参数:[geohash:true]:Elasticsearch 5.X

时间:2017-02-22 07:40:45

标签: elasticsearch geopoints elasticsearch-5 geohashing

我正在使用 elasticsearch 5.2 ,但在使用[geohash:true]为geo_point字段设置索引映射时,我收到以下错误

{
  "error": {
    "root_cause": [
      {
        "type": "mapper_parsing_exception",
        "reason": "Mapping definition for [location] has unsupported parameters:  [geohash : true]"
      }
    ],
    "type": "mapper_parsing_exception",
    "reason": "Failed to parse mapping [jdloc]: Mapping definition for [location] has unsupported parameters:  [geohash : true]",
    "caused_by": {
      "type": "mapper_parsing_exception",
      "reason": "Mapping definition for [location] has unsupported parameters:  [geohash : true]"
    }
  },
  "status": 400
}

有人可以告诉我,[ geoshash ]是否已被折旧,还是在创建文档时还有另一种方法可以从geo_point字段类型生成和存储geohash?

1 个答案:

答案 0 :(得分:3)

引用documentation

  

geo_point字段

     

与数字字段一样,地理点字段现在使用   新的BKD树结构。由于这种结构是从根本上设计的   对于多维空间数据,以下字段参数是   不再需要或支持:geohash,geohash_prefix,   geohash_precision,lat_lon。 API仍然支持Geohashes   透视,仍然可以使用.geohash字段访问   扩展,但它们不再用于索引地理点数据。

看起来不再支持/需要它了。见here。根据示例,他们使用geohash进行以下映射。

{
  "mappings": {
    "my_type": {
      "properties": {
        "location": {
          "type": "geo_point"
        }
      }
    }
  }
}

 PUT my_index/my_type/3
{
  "text": "Geo-point as a geohash",
  "location": "drm3btev3e86" 
}

更新:

我从文档中了解到,映射不支持geohash但您仍可以访问它。所以应该自动计算。

因此,当您按如下方式编制索引时,您也应该能够访问geohash

PUT my_index/my_type/1
{
  "text": "Geo-point as an object",
  "location": { 
    "lat": 41.12,
    "lon": -71.34
  }
}