Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Guide [7.17] ›Query DSL ›Geo запросы

Запрос гео-многоугольника

Устарел в 7.12.

Используйте Geoshape вместо него, где многоугольники определены в GeoJSON или Well-Known Text (WKT).

Запрос, возвращающий совпадения, которые попадают только в пределах многоугольника точек. Вот пример:

GET /_search
{
  "query": {
    "bool": {
      "must": {
        "match_all": {}
      },
      "filter": {
        "geo_polygon": {
          "person.location": {
            "points": [
              { "lat": 40, "lon": -70 },
              { "lat": 30, "lon": -80 },
              { "lat": 20, "lon": -90 }
            ]
          }
        }
      }
    }
  }
}

Параметры запроса

Параметр Описание

_name

Необязательное поле имени для идентификации фильтра

validation_method

Установите в значение IGNORE_MALFORMED, чтобы принять гео-точки с недопустимой широтой или долготой, COERCE, чтобы попытаться определить правильную широту или долготу, или STRICT (по умолчанию STRICT).

Допустимые форматы

Широта/Долгота как массив

Формат как [lon, lat]

Примечание: порядок lon/lat здесь должен соответствовать GeoJSON.

GET /_search
{
  "query": {
    "bool": {
      "must": {
        "match_all": {}
      },
      "filter": {
        "geo_polygon": {
          "person.location": {
            "points": [
              [ -70, 40 ],
              [ -80, 30 ],
              [ -90, 20 ]
            ]
          }
        }
      }
    }
  }
}
Широта/Долгота как строка

Формат в lat,lon.

GET /_search
{
  "query": {
    "bool": {
      "must": {
        "match_all": {}
      },
      "filter": {
        "geo_polygon": {
          "person.location": {
            "points": [
              "40, -70",
              "30, -80",
              "20, -90"
            ]
          }
        }
      }
    }
  }
}
Geohash
GET /_search
{
  "query": {
    "bool": {
      "must": {
        "match_all": {}
      },
      "filter": {
        "geo_polygon": {
          "person.location": {
            "points": [
              "drn5x1g8cu2y",
              "30, -80",
              "20, -90"
            ]
          }
        }
      }
    }
  }
}

Тип поля

Для запроса требуется установить тип geo_point для соответствующего поля.

Игнорировать неотображенное поле

Когда установлено значение true, параметр ignore_unmapped будет игнорировать неотображенное поле и не будет соответствовать ни одному документу для этого запроса. Это может быть полезно при запросе к нескольким индексам, которые могут иметь разные отображения. Когда установлено значение false (значение по умолчанию), запрос выбросит исключение, если поле не отображено.

© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/7.17/query-dsl-geo-polygon-query.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API