Elasticsearch——Geopoint字段类型

geo_point类型的字段接受经纬度对,可以使用:

  • 在边界框内、距离中心点一定距离内、多边形内或geo_shape查询内查找地质点的步骤。

  • 按地理位置或距离中心点聚合文档。

  • 将距离整合到文档的相关性得分中。

  • 按距离对文档进行排序。

指定geopoint点有五种方式,如下所示:

PUT my-index-000001
{
  "mappings": {
    "properties": {
      "location": {
        "type": "geo_point"
      }
    }
  }
}


PUT my-index-000001/_doc/1
{
  "text": "Geopoint as an object",
  "location": {  (1)
    "lat": 41.12,
    "lon": -71.34
  }
}


PUT my-index-000001/_doc/2
{
  "text": "Geopoint as a string",
  "location": "41.12,-71.34"  (2)
}


PUT my-index-000001/_doc/3
{
  "text": "Geopoint as a geohash",
  "location": "drm3btev3e86"   (3)
}


PUT my-index-000001/_doc/4
{
  "text": "Geopoint as an array",
  "location": [ -71.34, 41.12 ]   (3)
}



PUT my-index-000001/_doc/5
{
  "text": "Geopoint as a WKT POINT primitive",
  "location" : "POINT (-71.34 41.12)"   (5)
}



GET my-index-000001/_search
{
  "query": {
    "geo_bounding_box": {  (6)
      "location": {
        "top_left": {
          "lat": 42,
          "lon": -72
        },
        "bottom_right": {
          "lat": 40,
          "lon": -74
        }
      }
    }
  }
}




(1)geopoint表示为对象,使用lat和lon关键点。

(2)geopoint表示为字符串,格式为:“lat,lon”。

(3)geopoint表示为geohash。

(4)geopoint表示为 array的格式:[lon,lat]

(5)genpoint表示为 Well-Known Text Point ,用“Point(lon-lat)”格式。

(6)地理边界框查询,用于查找落在该框内的所有地理点。

注意:Geopoints 表示为数组或字符串

请注意,字符串genpoints按lat、lon顺序排列,而阵array geopoints按相反顺序排列:lon、lat。

最初,lat、lon用于数组和字符串,但数组格式在早期已更改,以符合GeoJSON使用的格式。

在脚本(scripts)中使用Geopoints

在scripts中访问某个geopoint的值时,该值将作为GeoPoint对象返回,从而允许分别访问.lat和.lon值:

def geopoint = doc['location'].value;
def lat      = geopoint.lat;
def lon      = geopoint.lon;

出于性能原因,最好直接访问lat/lon值:

def lat      = doc['location'].lat;
def lon      = doc['location'].lon;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值