与 geo_point
类型的字段相似, 地理形状也必须在使用前明确映射:
PUT /attractions
{
"mappings": {
"landmark": {
"properties": {
"name": {
"type": "string"
},
"location": {
"type": "geo_shape"
}
}
}
}
}
你需要考虑修改两个非常重要的设置: 精度
和 距离误差
。
精度
( precision
)参数 用来控制生成的 geohash 的最大长度。默认精度为 9
,等同于尺寸在 5m x 5m 的geohash 。这个精度可能比你需要的精确得多。
精度越低,需要索引的单元就越少,检索时也会更快。当然,精度越低,地理形状的准确性就越差。你需要考虑自己的地理形状所需要的精度——即使减少1-2个等级的精度也能带来明显的消耗缩减收益。
你可以使用距离来指定精度 —— 如 50m
或 2km
—不过这些距离最终也会转换成对应的[geohashes]等级。