[英]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.