地理多边形查询编辑

在 7.12 中已弃用。

使用 地理形状 代替,其中多边形在 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]

注意:此处经度/纬度的顺序必须符合 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 类型编辑

查询 需要 在相关字段上设置 geo_point 类型。

忽略未映射编辑

当设置为 true 时,ignore_unmapped 选项将忽略未映射的字段,并且不会匹配此查询的任何文档。这在查询可能具有不同映射的多个索引时很有用。当设置为 false(默认值)时,如果字段未映射,查询将抛出异常。