【SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】
根据经纬度查询。常见的使用场景包括:
携程:搜索我附近的酒店

滴滴:搜索我附近的出租车

微信:搜索我附近的人
…【搜索附近的功能】
【实现的方式不止一种】
根据经纬度查询,官方文档。
https://www.elastic.co/guide/en/elasticsearch/reference/current/geo-queries.html

例如:
【举个栗子】
// geo_bounding_box查询
GET /indexName/_search
{
"query": {
"geo_bounding_box": {
"FIELD": {
"top_left": {
"lat": 31.1,
"lon": 121.5
},
"bottom_right": {
"lat": 30.9,
"lon": 121.7
}
}
}
}
}

左上和右下,形成的矩阵范围【可以看到如果是这个图中,就有三个点,符合要求】
【举个栗子】
// geo_distance 查询
GET /indexName/_search
{
"query": {
"geo_distance": {
"distance": "15km",
"FIELD": "31.21,121.5"
}
}
}

这个就和我们的数据很像了,我们的location 字段就是一个点
直接试试
# distance 查询
GET /hotel/_search
{
"query": {
"geo_distance":{
"distance": "15km",
"location":"31.21,121.5"
}
}
}
直接运行

好家伙,这么多嘛【47 家】
缩小范围

OK, 这样就只有13 家满足了