ES GEO地理空间查询java版

这篇博客详细介绍了如何在Java中使用Elasticsearch进行GEO地理空间查询,包括半径范围查询、基于geo-point的多边形查询(在7.12版本后被Geo-shape查询取代)以及geo-shape形状查询。内容涵盖了设置mapping、查询方法及Java代码示例,同时提到了支持的数据格式如GeoJSON和WKT。
摘要由CSDN通过智能技术生成

ES GEO地理空间查询java版

一、半径范围查询

1、设置mapping,类型为geo_point
PUT /my_locations
{
   
  "mappings": {
   
    "properties": {
   
      "location": {
   
        "type": "geo_point"
      }
    }
  }
}
2、中心点查询半径内匹配点
GET /my_locations/_search
{
   
  "query": {
   
    "bool": {
   
      "must": {
   
        "match_all": {
   }
      },
      "filter": {
   
        "geo_distance": {
   
          "distance": "12km",
          "location": {
   
            "lat": 40,
            "lon": -70
          }
        }
      }
    }
  }
}
3、java 代码
......
MultiCondition.GeoDistance geo = multiCondition.getGeoDistance();
//构建半径查询 GeoDistanceQueryBuilder
GeoDistanceQueryBuilder geoDistanceQueryBuilder = QueryBuilders.geoDistanceQuery(geo.getFieldName())
        .point(geo.geoPoint.lat(),geo.geoPoint.getLon())
        .distance(geo.getDistance(), DistanceUnit.KILOMETERS)
        .geoDistance(GeoDistance.PLANE);
boolQueryBuilder.filter(geoDistanceQueryBuilder);
......
//点到圆点距离排序,返回xxkm
GeoDistanceSortBuilder geoSortBuilder = SortBuilders.geoDistanceSort(geoDistance.getFieldName(), geoDistance.geoPoint.getLat(), geoDistance.geoPoint.ge
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值