Elasticsearch 之(40)酒店o2o搜索案例以及搜索指定区域内的酒店
稍微真实点的案例,酒店o2o app作为一个背景,用各种各样的方式,去搜索你当前所在的地理位置附近的酒店
搜索指定区域范围内的酒店,比如说,我们可以在搜索的时候,指定两个地点,就要在东方明珠大厦和上海路组成的矩阵的范围内,搜索我想要的酒店
搜索指定区域范围内的酒店,比如说,我们可以在搜索的时候,指定两个地点,就要在东方明珠大厦和上海路组成的矩阵的范围内,搜索我想要的酒店
PUT /hotel_app { "mappings": { "hotels": { "properties": { "pin": { "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} ] } } } } } }