中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

elasticsearch怎么設置地理位置

發布時間:2021-12-16 10:01:16 來源:億速云 閱讀:210 作者:iii 欄目:大數據

這篇文章主要講解了“elasticsearch怎么設置地理位置”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“elasticsearch怎么設置地理位置”吧!

1. 地理位置

2. 地理坐標點

2.1. 設置索引屬性

  • geo_point: 地理坐標類型

  • lat_lon: 設置為 true 時,latlon 字段將被分別索引。它們可以被用于檢索,但是不會在檢索結果中返回。

{
  "mappings": {
    "<index_name>": {
      "properties": {
        "<field>": {
          "type": "geo_point",
          "lat_lon": true
        }
      }
    }
  }
}

2.2. 經緯度格式

格式一:字符串,格式 "lat,lon"

{
  "location": "40.715, -74.011"
}

格式二:

{
  "location": {
    "lat":     40.722,
    "lon":    -73.989
  }
}

格式三:數組,格式 [lon,lat]

{
  "location": [ -73.983, 40.719 ]
}

3. 過濾查找

3.1. geo_bounding_box

地理坐標盒模型過濾器,找出落在指定矩形框中的點

  • 地理坐標盒模型過濾器不需要把所有坐標點都加載到內存里。 因為它要做的只是簡單判斷 latlon 坐標數值是否在給定的范圍內,可以用倒排索引做一個 range 過濾來實現目標

  • 設置 type 參數為 indexed (替代默認值 memory )來明確告訴 Elasticsearch 對這個過濾器使用倒排索引。

{
    "query": {
        "filtered": {
            "filter": {
                "geo_bounding_box": {
                    "type": "indexed",
                    "location": {
                        "top_left": {
                            "lat": 40.8,
                            "lon": -74.0
                        },
                        "bottom_right": {
                            "lat": 40.7,
                            "lon": -73.0
                        }
                    }
                }
            }
        }
    }
}

3.2. geo_distance

地理距離過濾器,找出與指定位置在給定距離內的點

常用距離單位: mi(英里), yd(碼), in(英寸), km(千米), m(米), cm(厘米), mm(毫秒)

{
    "query": {
        "filtered": {
            "filter": {
                "geo_distance": {
                    "distance": "1km",
                    "location": {
                        "lat": 40.715,
                        "lon": -73.988
                    }
                }
            }
        }
    }
}

3.3. geo_distance_range

地理距離區間過濾器, 找出與指定點距離在給定最小距離和最大距離之間的點

  • 匹配那些距離中心點大于等于 1km 而小于 2km 的位置

{
    "query": {
        "filtered": {
            "filter": {
                "geo_distance_range": {
                    "gte": "1km",
                    "lt": "2km",
                    "location": {
                        "lat": 40.715,
                        "lon": -73.988
                    }
                }
            }
        }
    }
}

3.4. geo_polygon

找出落在多邊形中的點。 這個過濾器使用代價很大。當你覺得自己需要使用它,最好先看看

3.5. 按距離排序

  • 計算每個文檔中 location 字段與指定的 lat/lon 點間的距離

  • 將距離以 km 為單位寫入到每個返回結果的 sort 鍵中

  • 使用快速但精度略差的 plane 計算方式

{
    "query": {
        "filtered": {
            "filter": {
                "geo_bounding_box": {
                    "type": "indexed",
                    "location": {
                        "top_left": {
                            "lat": 40.8,
                            "lon": -74.0
                        },
                        "bottom_right": {
                            "lat": 40.4,
                            "lon": -73.0
                        }
                    }
                }
            }
        }
    },
    "sort": [
        {
            "_geo_distance": {
                "location": {
                    "lat": 40.715,
                    "lon": -73.998
                },
                "order": "asc",
                "unit": "km",
                "distance_type": "plane"
            }
        }
    ]
}

感謝各位的閱讀,以上就是“elasticsearch怎么設置地理位置”的內容了,經過本文的學習后,相信大家對elasticsearch怎么設置地理位置這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

延边| 盈江县| 永定县| 肇东市| 甘南县| 常熟市| 永城市| 青海省| 水城县| 台山市| 游戏| 河池市| 永修县| 周至县| 民县| 麦盖提县| 扬州市| 玉林市| 康乐县| 盱眙县| 嵊泗县| 从化市| 天全县| 满城县| 阳原县| 宜兰县| 嘉义市| 白玉县| 恩平市| 东至县| 额尔古纳市| 南昌市| 禹城市| 陵川县| 慈溪市| 邢台县| 罗定市| 龙岩市| 阿拉尔市| 江北区| 侯马市|