国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

用ES實現(xiàn)根據(jù)經(jīng)緯度由近及遠推薦店鋪

這篇具有很好參考價值的文章主要介紹了用ES實現(xiàn)根據(jù)經(jīng)緯度由近及遠推薦店鋪。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、介紹

ES中特有的類型geo_point,是用來存儲地圖類型的。店鋪推薦、地圖搜索和外賣平臺等,實現(xiàn)目標距離你多少米,就是用這個數(shù)據(jù)類型做出來的。

其中,ES支持的地圖檢索方式有以下幾種;

geo_distance:直線距離檢索,如給定點A,要求返回地圖上距離點A三千米的店鋪

geo_bounding_box:以兩個點確定一個矩形,獲取在矩形內(nèi)的全部數(shù)據(jù)

geo_polygon:以多個點,確定多邊形,獲取多邊形內(nèi)的全部數(shù)據(jù)

本文則以geo_distance為例說明。

二、舉例說明

2.1 新建ES索引
PUT /map
{
  "settings": {
    "number_of_replicas": 3,
    "number_of_shards": 5
  }
  , "mappings": {
    "properties": {
      "name":
      {
        "type": "text"
      }
      ,"location":
      {
        "type": "geo_point"
      }
    }
  }
}
2.2 添加索引數(shù)據(jù)
PUT /map/_doc/1
{
  "name":"天安門",
  "location":
  {
    "lon":116.403981,
    "lat":39.914492
  }
}


PUT /map/_doc/2
{
  "name":"海淀公園",
  "location":
  {
    "lon":116.302509,
    "lat":39.991152
  }
}

PUT /map/_doc/3
{
  "name":"北京動物園",
  "location":
  {
    "lon":116.343184,
    "lat":39.947468
  }
}
2.3 執(zhí)行ES搜索

搜索條件:

【query中的參數(shù)】

location:指定定位的經(jīng)緯度,一般取用戶定位點的經(jīng)緯度。

lat:緯度。

lon:經(jīng)度。

distance:距離指定定位的最遠距離,即本次搜索結(jié)果必須在指定定位點到該距離之間。

distance_type:arc表示圓形范圍

es 附近的店鋪,ElasticSearch,elasticsearch,Powered by 金山文檔

【sort】中的參數(shù)

location:指定定位的經(jīng)緯度,一般取用戶定位點的經(jīng)緯度。

order:距離排序,asc正序,desc則是倒序。

unit:距離單位,m就是米,km就是千米。

GET map/_search
{
  "from": 0, 
  "size": 10, 
  "query": {
    "bool": {
      "filter": [
        {"geo_distance":{
          "distance":"3000km",
          "location":{
            "lat":22.818481786041648,
            "lon":108.37950959102159
          },
          "distance_type":"arc"
        }}
      ]
    }
  },
  "sort": [
    {
      "_geo_distance": {
        "location": {
          "lat": 22.818481786041648,
          "lon": 108.37950959102159
        },
        "order": "asc",
        "unit": "m"
      }
    }
  ]
}

執(zhí)行搜索,得到搜索結(jié)果:

根據(jù)前面的搜索條件,執(zhí)行搜索后得到是按照當(dāng)前定位點的經(jīng)緯度,查詢距離3km以內(nèi)的所有店鋪,由近及遠的排序的結(jié)果。

location:每個店鋪所在的經(jīng)緯度。

sort:每個店鋪距離當(dāng)前定位點的距離。前面搜索條件我們設(shè)置了單位為米,所以這里就是距離1810米的意思。

es 附近的店鋪,ElasticSearch,elasticsearch,Powered by 金山文檔

三、結(jié)語

至于geo_bounding_box和geo_polygon的搜索方式我就不展開舉例了,操作起來也大同小異,有興趣的可以研究。

根據(jù)經(jīng)緯度查詢結(jié)果并排序這個業(yè)務(wù)已經(jīng)很常見了,既然ES提供了這個便捷,不妨使用一下,當(dāng)然還有其他的辦法可以實現(xiàn)這個效果,大家可以根據(jù)自己實際情況選型吧。文章來源地址http://www.zghlxwxcb.cn/news/detail-637998.html

到了這里,關(guān)于用ES實現(xiàn)根據(jù)經(jīng)緯度由近及遠推薦店鋪的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 根據(jù)經(jīng)緯度計算兩點之間的距離

    根據(jù)經(jīng)緯度計算兩點之間的距離

    前言 在我們平時使用美團,餓了么等app進行訂餐,或者使用貓眼進行訂電影票的時候,都有一個距離的排序,表明該家店距離我們當(dāng)前的位置,這種基于地理位置的服務(wù),統(tǒng)一被稱為LBS(Location Based Service),而LBS的實現(xiàn)則是借助于GIS,WC(無線通信)等信息技術(shù)來實現(xiàn)。而今

    2024年02月05日
    瀏覽(62)
  • NC文件根據(jù)經(jīng)緯度提取點上數(shù)值

    NC文件根據(jù)經(jīng)緯度提取點上數(shù)值

    Hello,Hello,Hello,大家好,時隔上一次更新已經(jīng)很久了,今天主要和大家分享一組簡單的代碼,來提取NC文件中某一點的數(shù)值! 本次實例數(shù)據(jù)依舊使用喜聞樂見的NCEP數(shù)據(jù),數(shù)據(jù)使用的是多層氣溫?;蛘呖梢灾苯狱c擊這里下載 這個就是下載好的數(shù)據(jù): 大家可以看一下,這個數(shù)

    2024年02月05日
    瀏覽(34)
  • Python根據(jù)經(jīng)緯度在地圖上顯示(folium)

    Python根據(jù)經(jīng)緯度在地圖上顯示(folium)

    1、location地圖中心點 經(jīng)緯度,list 或者 tuple 格式,順序為 latitude(緯度), longitude(經(jīng)度) 2、zoom_start地圖等級 縮放值,默認為 10,值越大比例尺越小,地圖放大級別越大 3、tiles 顯示樣式,默認*‘OpenStreetMap’*,也就是開啟街道顯示;也有一些其他的內(nèi)建地圖樣式,如’Stamen T

    2024年02月14日
    瀏覽(42)
  • Java根據(jù)坐標經(jīng)緯度計算兩點距離(5種方法)、校驗經(jīng)緯度是否在圓/多邊形區(qū)域內(nèi)的算法推薦

    Java根據(jù)坐標經(jīng)緯度計算兩點距離(5種方法)、校驗經(jīng)緯度是否在圓/多邊形區(qū)域內(nèi)的算法推薦

    目錄 前言 一、根據(jù)坐標經(jīng)緯度計算兩點距離(5種方法) 1.方法一 2.方法二 3.方法三 4.方法四 5.方法五 5.1 POM引入第三方依賴 5.2 代碼 6.測試結(jié)果對比 二、校驗經(jīng)緯度是否在制定區(qū)域內(nèi) 1.判斷一個坐標是否在圓形區(qū)域內(nèi) 2.判斷一個坐標是否在一個多邊形區(qū)域內(nèi) 3.結(jié)果 總結(jié) ??

    2024年02月10日
    瀏覽(29)
  • uniapp結(jié)合Canvas+renderjs根據(jù)經(jīng)緯度繪制軌跡(二)

    uniapp結(jié)合Canvas+renderjs根據(jù)經(jīng)緯度繪制軌跡(二)

    ? 根據(jù)官方建議要想在 app-vue 流暢使用 Canvas 動畫,需要使用 renderjs 技術(shù),把操作 canvas 的js邏輯放到視圖層運行,避免邏輯層和視圖層頻繁通信。 這里呢結(jié)合 renderjs 技術(shù)實現(xiàn)繪制軌跡圖形。 你可能需要先了解 renderjs 如何數(shù)據(jù)通訊:renderjs 與 app-vue之間數(shù)據(jù)交互 html中使用

    2024年02月11日
    瀏覽(28)
  • 根據(jù)手機指南針經(jīng)緯度在地圖上找到其位置

    根據(jù)手機指南針經(jīng)緯度在地圖上找到其位置

    使用手機指南針獲取經(jīng)緯度,然后在地圖上找到位置。 1、使用手機指南針獲取經(jīng)緯度: 2、將度分秒轉(zhuǎn)換為度: 分/60+秒/3600+整數(shù)度數(shù),得到以度為單位的數(shù)值 手機經(jīng)緯度:117.1291666,31.842777 3、坐標系轉(zhuǎn)換: 地圖坐標系轉(zhuǎn)換 - 在線工具 輸入手機經(jīng)緯度:117.1291666,31.842777 得到

    2024年02月09日
    瀏覽(32)
  • Java調(diào)用高德地圖API根據(jù)詳細地址獲取經(jīng)緯度

    Java調(diào)用高德地圖API根據(jù)詳細地址獲取經(jīng)緯度

    訪問高德開放平臺https://lbs.amap.com/ 登錄后,在控制臺中創(chuàng)建一個應(yīng)用,獲取生成的應(yīng)用key。這個key將用于訪問高德地圖API。 ? 您可以使用Java中的 HttpURLConnection 或 HttpClient 等工具發(fā)送HTTP請求到高德地圖API,并傳遞參數(shù)以獲取經(jīng)緯度信息。以下是一個使用 HttpURLConnection 的示例

    2024年02月05日
    瀏覽(161)
  • ES 地圖經(jīng)緯度搜索

    ES 地圖經(jīng)緯度搜索

    ES中提供了一個數(shù)據(jù)類型 geo_point,這個類型就是用來存儲經(jīng)緯度的。 創(chuàng)建一個帶geo_point類型的索引,并添加測試數(shù)據(jù) ?

    2024年02月12日
    瀏覽(27)
  • ElasticSearch - 根據(jù)經(jīng)緯度,簡單搜索指定距離范圍內(nèi)的數(shù)據(jù)

    ElasticSearch - 根據(jù)經(jīng)緯度,簡單搜索指定距離范圍內(nèi)的數(shù)據(jù)

    ES的地圖檢索方式 ES支持的地圖檢索方式有以下幾種; geo_distance geo_bounding_box geo_polygon 1、 geo_distance :直線距離檢索,如給定點A,要求返回地圖上距離點A三千米的商家(點外賣場景) 2、查找索引內(nèi)距離北京站(116.433733,39.908404)3000米內(nèi)的點 geo_distance涉及的參數(shù)如下 location:確

    2024年02月14日
    瀏覽(17)
  • 如何利用地圖API接口根據(jù)地址獲取具體的經(jīng)緯度?

    如何利用地圖API接口根據(jù)地址獲取具體的經(jīng)緯度?

    ?目錄 一、登錄到百度地圖開放平臺 二、認證為開發(fā)者 三、創(chuàng)建應(yīng)用 四、地址轉(zhuǎn)經(jīng)緯度API接口 五、封裝JAVA工具類 百度地圖開放平臺網(wǎng)址:https://lbsyun.baidu.com/ 這里你有兩種選擇,可以選擇認證個人開發(fā)者或者企業(yè)開發(fā)者,區(qū)別在企業(yè)認證每日接口調(diào)用次數(shù)配額更多,并發(fā)

    2024年02月16日
    瀏覽(48)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包