例子:
假设以下文档已编制索引:
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_bounding_box filter匹配与边界框相交的geo_point 值。要定义长方体,请为两个相对的角点提供地质点值。
GET my_locations/_search { "query": { "bool": { "must": { "match_all": {} }, "filter": { "geo_bounding_box": { "pin.location": { "top_left": { "lat": 40.73, "lon": -74.1 }, "bottom_right": { "lat": 40.01, "lon": -71.12 } } } } } } }
使用相同的过滤器匹配与边界框相交的geo_shape值:
GET my_geoshapes/_search { "query": { "bool": { "must": { "match_all": {} }, "filter": { "geo_bounding_box": { "pin.location": { "top_left": { "lat": 40.73, "lon": -74.1 }, "bottom_right": { "lat": 40.01, "lon": -71.12 } } } } } } }
要同时匹配geo_point和geo_shape值,请搜索两个索引:
GET my_locations,my_geoshapes/_search { "query": { "bool": { "must": { "match_all": {} }, "filter": { "geo_bounding_box": { "pin.location": { "top_left": { "lat": 40.73, "lon": -74.1 }, "bottom_right": { "lat": 40.01, "lon": -71.12 } } } } } } }公认格式
与geo_point类型可以接受geo point的不同表示方式大致相同,过滤器也可以接受它:
Lat Lon As PropertiesGET my_locations/_search { "query": { "bool": { "must": { "match_all": {} }, "filter": { "geo_bounding_box": { "pin.location": { "top_left": { "lat": 40.73, "lon": -74.1 }, "bottom_right": { "lat": 40.01, "lon": -71.12 } } } } } } }Lat Lon As Array
[lon,lat]格式,注意,此处lon/lat的顺序,以符合GeoJSON。
GET my_locations/_search { "query": { "bool": { "must": { "match_all": {} }, "filter": { "geo_bounding_box": { "pin.location": { "top_left": [ -74.1, 40.73 ], "bottom_right": [ -71.12, 40.01 ] } } } } } }Lat Lon As String
Format in lat,lon.
GET my_locations/_search { "query": { "bool": { "must": { "match_all": {} }, "filter": { "geo_bounding_box": { "pin.location": { "top_left": "40.73, -74.1", "bottom_right": "40.01, -71.12" } } } } } }Bounding Box as Well-Known Text (WKT)
GET my_locations/_search { "query": { "bool": { "must": { "match_all": {} }, "filter": { "geo_bounding_box": { "pin.location": { "wkt": "BBOX (-74.1, -71.12, 40.73, 40.01)" } } } } } }Geohash
GET my_locations/_search { "query": { "bool": { "must": { "match_all": {} }, "filter": { "geo_bounding_box": { "pin.location": { "top_left": "dr5r9ydj2y73", "bottom_right": "drj7teegpus6" } } } } } }
使用地理哈希指定边界框边缘的边界时,地理哈希将被视为矩形。定义边界框时,其左上角对应于top_left参数中指定的geohash的左上角,其右下角定义为bottom_right参数中指定的geohash的右下角。
为了指定与geohash整个区域匹配的边界框,可以在左上角和右下角参数中指定geohash:
GET my_locations/_search { "query": { "geo_bounding_box": { "pin.location": { "top_left": "dr", "bottom_right": "dr" } } } }
在本例中,geohash dr将生成边界框查询,左上角为45.0,-78.75,右下角为39.375,-67.5。
顶点
边界框的顶点可以通过“top_left”和“bottom_right”参数设置,也可以通过“top_right”和“bottom_left”参数设置。更多关于topLeft、bottomRight、topRight和bottomLeft的名称均受支持。可以使用简单的名称top、left、bottom和right分别设置值,而不是成对设置值。
GET my_locations/_search { "query": { "bool": { "must": { "match_all": {} }, "filter": { "geo_bounding_box": { "pin.location": { "top": 40.73, "left": -74.1, "bottom": 40.01, "right": -71.12 } } } } } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)