ElasticSearch находит документ с точным соответствием по долготе

У меня есть это отображение поля в моем индексе:

 "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 ответ

Вам нужно запросить гео поля другим способом. Это то, что говорится об ошибке. Пожалуйста, смотрите https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-geo-distance-query.html для получения дополнительной информации.

Если вам нужны совпадения, близкие к вашим критериям, рассмотрите возможность понижения параметра расстояния в запросе расстояния, но помните о 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
                    }
                }
            }
        }
    }
}
Другие вопросы по тегам