Elasticsearch7.17.7操作geo_point类型数据

目前使用的elasticsearch版本是7.17.7
有一个index,其中mapping的内容如下:

{
  "city" : {
    "aliases" : { },
    "mappings" : {
      "properties" : {
        "city" : {
          "type" : "keyword"
        },
        "location" : {
          "type" : "geo_point"
        }
      }
    }
  }
}

其中location字段的类型设置为geo_point,可以传递经纬度。

支持的数据格式如下,ES会自动将lon转化为经度,lat转化为维度:

{"city":"鄣山大峡谷风景区","location": {"lon": "118.74", "lat": "30.08"}}
{"city":"九寨沟风景区","location": {"lon": "103.91", "lat": "33.26"}}
{"city":"水绘园","location": {"lon": "120.56", "lat": "32.39"}}
{"city":"关山国家地质公园八里沟园区","location": {"lon": "113.58", "lat": "35.59"}}
{"city":"Sapu Padidu","location": {"lon": "125.266937", "lat": "5.91722"}}
{"city":"将军石山庄","location": {"lon": "130.11", "lat": "47.23"}}
{"city":"Saipan","location": {"lon": "145.7", "lat": "15.1"}}
{"city":"六峰山","location": {"lon": "109.28", "lat": "22.41"}}
{"city":"小河古村评梅景区","location": {"lon": "113.64", "lat": "37.84"}}

根据矩形搜索

输入的是矩形形状的左上经纬度和右下经纬度,查询语句如下:

{
    "query": {
        "bool": {
            "must": {
                "match_all": {}
            },
            "filter": {
                "geo_bounding_box": {
                    "location": {
                        "top_left": {
                            "lat": 左上纬度,
                            "lon": 左上经度
                        },
                        "bottom_right": {
                            "lat": 右下纬度,
                            "lon": 右下经度
                        }
                    }
                }
            }
        }
    }
}

es会将包含在当前矩形范围内的city搜索出来。

根据圆形和半径搜索

es还支持根据圆形和半径来搜索数据:

搜索语句如下:

{
    "query": {
        "bool": {
            "must": {
                "match_all": {}
            },
            "filter": {
                "geo_distance": {
                    "distance": str(距离) + "m",
                    "distance_type": "arc",
                    "_name": "optional_name",
                    "location": {
                        "lat": 圆心的纬度,
                        "lon": 圆心的经度
                    }
                }
            }
        }
    }
}

其中distance指的是半径的大小,单位可以是mkm等等。会将当前半径下面的所有点搜索出来。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值