进阶-第78__elasticsearch高手进阶_酒店o2o搜索案例以及搜索指定区域内的酒店

稍微真实点的案例,酒店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}

            ]

          }

        }

      }

    }

  }

}

 

 

主要就是几个点组成多边形的矩阵啦

 

 

你可能感兴趣的:(elasticsearch)