geo_distance查询

在地理点的给定距离内匹配geo_point和geo_shape值。

示例

假设有如下索引:

PUT /my_locations
{
  "mappings": {
    "properties": {
      "pin": {
        "properties": {
          "location": {
            "type": "geo_point"
          }
        }
      }
    }
  }
}

PUT /my_locations/_doc/1
{
  "pin": {
    "location": {
      "lat": 40.12,
      "lon": -71.34
    }
  }
}

PUT /my_geoshapes
{
  "mappings": {
    "properties": {
      "pin": {
        "properties": {
          "location": {
            "type": "geo_shape"
          }
        }
      }
    }
  }
}

PUT /my_geoshapes/_doc/1
{
  "pin": {
    "location": {
      "type" : "polygon",
      "coordinates" : [[[13.0 ,51.5], [15.0, 51.5], [15.0, 54.0], [13.0, 54.0], [13.0 ,51.5]]]
    }
  }
}

使用geo_distance过滤器匹配距离另一个地理点指定距离内的geo_point值  

GET /my_locations/_search
{
  "query": {
    "bool": {
      "must": {
        "match_all": {}
      },
      "filter": {
        "geo_distance": {
          "distance": "200km",
          "pin.location": {
            "lat": 40,
            "lon": -70
          }
        }
      }
    }
  }
}

使用相同的过滤器匹配给定距离内的geo_shape值:

GET my_geoshapes/_search
{
  "query": {
    "bool": {
      "must": {
        "match_all": {}
      },
      "filter": {
        "geo_distance": {
          "distance": "200km",
          "pin.location": {
            "lat": 40,
            "lon": -70
          }
        }
      }
    }
  }
}

要匹配geo_point和geo_shape值,搜索这两个索引:

GET my_locations,my_geoshapes/_search
{
  "query": {
    "bool": {
      "must": {
        "match_all": {}
      },
      "filter": {
        "geo_distance": {
          "distance": "200km",
          "pin.location": {
            "lat": 40,
            "lon": -70
          }
        }
      }
    }
  }
}

支持的格式

就像geo_point类型可以接受geo点的不同表示方式一样,过滤器也可以接受它:参照geo_bounding_box查询

查询选项

选项说明
distance以指定位置为中心的圆的半径。落入这个圆圈的点被认为是匹配的。距离可以用各种单位来表示,参照 Distance Units.
distance_type如何计算距离。可以是弧线(默认),也可以是平面(更快,但在长距离和接近极点时不准确)。
_name可选名称字段来标识查询
validation_method设置为IGNORE_MALFORMED以接受纬度或经度无效的地理点,设置为COERCE以额外尝试和推断正确的坐标(默认为STRICT)。

多位置文档

geo_distance过滤器可以处理每个文档的多个位置/点。一旦一个位置/点匹配过滤器,该文档将被包含在过滤器中。

忽略未映射的

当ignore_unmapped选项设置为true时,将忽略未映射字段,并且不会匹配此查询的任何文档。这在查询可能具有不同映射的多个索引时很有用。当设置为false(默认值)时,如果该字段没有映射,查询将抛出异常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值