gpt4 book ai didi

elasticsearch - Elasticsearch错误的距离计算和过滤器

转载 作者:行者123 更新时间:2023-12-03 02:14:53 24 4
gpt4 key购买 nike

我正在对geo_distance过滤器使用elasticsearch,所以问题是它的距离测量很不正确,就像在下面的查询中一样,我正在过滤2500m,但返回的地方是6500m,为什么呢?我越过了谷歌 map 上两点之间的已验证距离。
询问

 
"query": {
"nested": {
"path": "sellers",
"query": {
"bool": {
"must": [
{
"match": {
"sellers.active": true
}
}
],
"filter": {
"geo_distance": {
"distance": "226",
"distance_type":"arc",
"sellers.seller_geo": [ 31.0035008, 75.8480896]
}
}
}
},
"inner_hits" : {

"sort": [
{
"sellers.sale_price": "asc"
}
],
"size":1,
"name": "hits_1"
}
}
}
}


结果是
  "took" : 47,
"hits" : {
"hits" : [
{
"inner_hits" : {
"hits_1" : {
"hits" : {
"total" : {
"value" : 1,
"relation" : "eq"
},
"max_score" : null,
"hits" : [
{
"_index" : "shopping_items",
"_type" : "_doc",
"_id" : "Z0AP8VFAEO",
"_nested" : {
"field" : "sellers",
"offset" : 22
},
"_score" : null,
"_source" : {
"prime" : true,
"instant_delivery" : true,
"dispatch_days" : 0,
"active" : true,
"cod" : false,
"discount" : "21.43",
"list_price" : 1964.25,
"seller_geo" : [
30.998450,
75.848835
],
"postal_code" : 141001,
"sale_price" : 1964.25,
"seller_id" : "A07RE66FZA"
},
"sort" : [
1964.25
]
}
]
}
}
}
}
]
}
}````
30.998450,75.848835和31.0035008,75.8480896之间的距离是9.34km

最佳答案

顺序为[30.998450, 75.848835]lat, lon是印度旁遮普邦的一个点。相反,它表示在北极圈附近的巴伦支海中的一个点...
现在,geo_distance query就像geo_point数据类型解析lon, lat这样的位置,从而符合GeoJSON标准。
换句话说,您的地理位置索引编制不正确。您可以通过删除索引并反转坐标来修复它。我个人更喜欢使用以下符号

{
"lat":40,
"lon":-70
}
这样人们就不会感到困惑。

关于elasticsearch - Elasticsearch错误的距离计算和过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63804249/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com