我正在使用 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?
答案 0 :(得分:3)
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
}
}