ElasticSearch使用纬度/经度查找文档完全匹配

时间:2018-11-08 19:44:43

标签: elasticsearch kibana

我的索引中有此字段映射:

 "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]

1 个答案:

答案 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
                    }
                }
            }
        }
    }
}