簡體   English   中英

PHP彈性搜索按地理距離排序

[英]Php Elastic Search Sort By Geo distance

我正在嘗試按公里的距離排序我的字段類型是"location": { "properties": { "lat": { "type": "float" }, "lon": { "type": "float" } } },

在我的索引中,它的存儲類似於"location": { "lon": 72.9814762, "lat": 33.7013063 },

並在查詢中

@apokryfos 是對的,您必須將數據映射為地理點。 之后,您將能夠對 _geo_distance 進行排序

"sort": [
    {
      "_geo_distance": {
        "coords": {
          "lat": -27.87,
          "lon": -54.43
        },
        "order": "asc",
        "unit": "km",
        "mode": "min",
        "distance_type": "arc",
        "ignore_unmapped": true
      }
    }
  ]

您必須手動進行映射。 請在下面找到映射示例(適用於 ES 7.4.0)。 第一個命令創建索引,第二個命令映射 2 個字段(一個 geo_point 類型的字段),第三個命令檢索映射信息。

> curl -X PUT -H "Content-Type:application/json" 
> "http://localhost:9200/my_helloworld_location"
> 
> curl -X PUT -H "Content-Type:application/json" 
> "http://localhost:9200/my_helloworld_location/_mapping/doc?include_type_name=true"
> -d ' {     "properties":{     "locationName":{  
>     "type":"text",
>     "fields":{  
>     "keyword":{  
>       "ignore_above":20,
>       "type":"keyword"
>     }    }   },    "location":{  
>     "type":"geo_point",
>     "fields":{  
>     "keyword":{  
>       "ignore_above":20,
>       "type":"keyword"
>     }    }   }  }   }'  
> 

> curl -X GET -H "Content-Type:application/json" 
> "http://localhost:9200/my_helloworld_location/_mapping?pretty=true"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM