我的索引中有此字段映射:
"businessLocation": {
"type": "geo_point"
},
我想使用与lat/long
坐标完全匹配的文档来查找文档。我尝试过geo_distance
,但是我的距离必须大于0。
我什至尝试了以下查询:
{
"query": {
"bool": {
"must": [
{
"query_string": {
"default_field": "businessLocation",
"query": "src.lat = 34.47 AND src.lon = -122.37"
}
}
]
}
}
}
但是,我遇到了这个错误:
Geo fields do not support exact searching, use dedicated geo queries instead: [businessLocation]
答案 0 :(得分:1)
您需要以其他方式查询地理字段。这就是错误所指出的。有关更多信息,请参见https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-geo-distance-query.html。
如果您需要匹配标准的匹配项,请考虑降低距离查询的distance参数,但请记住https://wiki.openstreetmap.org/wiki/Precision_of_coordinates。
{
"query": {
"bool" : {
"must" : {
"match_all" : {}
},
"filter" : {
"geo_distance" : {
"distance" : "2km",
"businessLocation" : {
"lat" : 34.47,
"lon" : -122.37
}
}
}
}
}
}