gpt4 book ai didi

ruby-on-rails - elasticsearch rails - 非法纬度值

转载 作者:行者123 更新时间:2023-12-04 05:38:32 25 4
gpt4 key购买 nike

当尝试根据索引中的记录动态搜索纬度时,我得到了一个非法的纬度值。查看我的索引时,我看不到任何无效的纬度和经度值,所以我猜这是我的代码中的一个错误。

确切错误;

{"type":"query_parsing_exception","reason":"illegal latitude value [269.99999983236194] for [geo_distance]","index":"addresses","line":1,"col":172}}]},"status":400}

搜索模型代码;

def self.search(query)
__elasticsearch__.search(
{
query:{
multi_match: {
query: query,
fields: ['full_address']
}
},
filter:{
geo_distance:{
distance: "6miles",
location: "address.location"
}
}
}
)
end

映射;

{ "addresses" : {
"mappings" : {
"address" : {
"properties" : {
"county" : {
"type" : "string"
},
"full_address" : {
"type" : "string"
},
"location" : {
"type" : "geo_point"
}
}
}
}

}

最佳答案

我今天遇到了同样的错误,但经度。事实证明,Elasticsearch 2.0 版和更新版本只允许 -180..180 范围内的经度值。

例如,版本 1.7.5(我在本地环境中使用)适用于 -180..180 和 0..360 两个范围。

您的错误状态:

illegal latitude value [269.99999983236194]

对于纬度,只允许范围为 -90..90 的值。

唯一的解决方法是在将经纬度值发送到 Elasticsearch 之前重新计算它们。例如对于经度你可以这样做:

((longitude.to_f + 180) % 360) - 180

关于ruby-on-rails - elasticsearch rails - 非法纬度值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34907078/

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