地理坐标点数据类型
地理坐标点
地理坐标点是指地球表面可以用经纬度描述的一个点。 地理坐标点可以用来计算两个坐标间的距离,还可以判断一个坐标是否在一个区域中。地理坐标点需要显式声明对应字段类型为 geo_point :
PUT /company-locations
{
"mappings": {
"properties": {
"name": {
"type": "text"
},
"location": {
"type": "geo_point"
}
}
}
}
- 经纬度坐标格式
如上例, location 字段被声明为 geo_point 后,我们就可以索引包含了经纬度信息的文档了。 经纬度信息的形式可以是字符串、数组或者对象
PUT /company-locations/_doc/1
{
"name": "NetEase",
"location": "40.715,74.011"
}
PUT /company-locations/_doc/2
{
"name": "Sina",
"location": {
"lat": 40.722,
"lon": 73.989
}
}
PUT /company-locations/_doc/3
{
"name": "Baidu",
"location": [
73.983,
40.719
]
}
字符串形式以半角逗号分割,如 “lat,lon”
对象形式显式命名为 lat 和 lon
数组形式表示为 [lon,lat]
通过地理坐标点过滤
有四种地理坐标点相关的过滤器 可以用来选中或者排除文档
https://www.elastic.co/guide/cn/elasticsearch/guide/current/geo-shapes.html
- 测试
GET /company-locations/_search
{
"query": {
"bool": {
"must": {
"match_all": {}
},
"filter": {
&#