稍微真实点的案例,酒店o2o app作为一个背景,用各种各样的方式,去搜索你当前所在的地理位置附近的酒店
搜索指定区域范围内的酒店:
建立mapping
PUT /hotel_app { "mappings": { "hotels": { "properties": { "pin": {//pin 是obj 类型 "properties": { "location": { "type": "geo_point" } } } } } } }
|
插入测试数据
PUT /hotel_app/hotels/1 { "name": "喜来登大酒店", "pin" : { "location" : { "lat" : 40.12, "lon" : -71.34 } } }
|
搜索测试一:
我们可以在搜索的时候,指定两个地点,就要在东方明珠大厦和上海路组成的矩阵的范围内,搜索我想要的酒店
GET /hotel_app/hotels/_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 } } } } } } }
|
搜索测试二:
我们现在要指定东方明珠大厦,上海路,上海博物馆,这三个地区组成的多边形的范围内,我要搜索这里面的酒店
GET /hotel_app/hotels/_search { "query": { "bool": { "must": [ { "match_all": {} } ], "filter": { "geo_polygon": { "pin.location": { "points": [ {"lat" : 40.73, "lon" : -74.1}, {"lat" : 40.01, "lon" : -71.12}, {"lat" : 50.56, "lon" : -90.58} ] } } } } } }
|
主要就是几个点组成多边形的矩阵啦