ElasticSearch地理位置搜索基礎

1. 創(chuàng)建mapping并插入數(shù)據(jù)

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
}
}
}

2. 在指定范圍以內的搜索

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}
]
}
}
}
}
}
}

3. 附近xx米以內的點

GET /hotel_app/hotels/_search
{
"query": {
"bool": {
"must": [
{
"match_all": {}
}
],
"filter": {
"geo_distance": {
"distance": "200km",
"pin.location": {
"lat": 40,
"lon": -70
}
}
}
}
}
}

4. 聚合函數(shù)

GET /hotel_app/hotels/_search
{
"size": 0,
"aggs": {
"agg_by_distance_range": {

  "geo_distance": {
    "field": "pin.location",
    "origin": {
      "lat": 40,
      "lon": -70
    },
    "unit": "mi", 
    "ranges": [
      {
        "to": 100
      },
      {
        "from": 100,
        "to": 300
      },
      {
        "from": 300
      }
    ]
  }
}

}
}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Neil Zhu,簡書ID Not_GOD,University AI 創(chuàng)始人 & Chief Scientist...
    朱小虎XiaohuZhu閱讀 13,287評論 0 5
  • Geo Points Geo-points 就是我們地球的經緯度,它能夠用于計算地球兩點之間的距離。 Geo-po...
    斯威特閱讀 2,110評論 0 4
  • 1.那個荒誕的夢境 今天上班,一整天對昨晚的夢境心有余悸。 昨晚睡到半夜,在夢里哭醒。 伸手一模臉龐,滿臉淚水。黑...
    曼猬閱讀 357評論 0 2
  • 在電梯里接到發(fā)小的微信:玉,我媽去世了。
    候鳥時光閱讀 119評論 0 0
  • 進京數(shù)日,除了擁堵的交通以及難以被滿足的舌尖體驗,倒是沒有多大感覺,甚至一度懷疑為什么要做這樣的選擇。 轉...
    進擊的面條閱讀 294評論 0 2

友情鏈接更多精彩內容