索引地理形状 | Elasticsearch: 权威指南 | Elastic
2025-10-28
地理形状通过 GeoJSON 来表示,这是一种开放的使用 JSON 实现的二维形状编码方式。
每个形状都包含了形状类型— point, line, polygon, envelope —和一个或多个经纬度点集合的数组。
如,我们用一个多边形来索引阿姆斯特丹达姆广场:
PUT /attractions/landmark/dam_square
{
"name" : "Dam Square, Amsterdam",
"location" : {
"type" : "polygon",
"coordinates" : [[
[ 4.89218, 52.37356 ],
[ 4.89205, 52.37276 ],
[ 4.89301, 52.37274 ],
[ 4.89392, 52.37250 ],
[ 4.89431, 52.37287 ],
[ 4.89331, 52.37346 ],
[ 4.89305, 52.37326 ],
[ 4.89218, 52.37356 ]
]]
}
}上例中大量的方括号可能看起来让人困惑,不过实际上 GeoJSON 的语法非常简单:
用一个数组表示 经纬度 坐标点:
[lon,lat]
一组坐标点放到一个数组来表示一个多边形:
[[lon,lat],[lon,lat], ... ]
一个多边形( polygon )形状可以包含多个多边形;第一个表示多边形的外轮廓,后续的多边形表示第一个多边形内部的空洞:
[ [[lon,lat],[lon,lat], ... ], # main polygon [[lon,lat],[lon,lat], ... ], # hole in main polygon ... ]
参见 Geo-shape mapping documentation 了解更多支持的形状。
官方地址:https://www.elastic.co/guide/cn/elasticsearch/guide/current/indexing-geo-shapes.html