原英文版地址: https://www.elastic.co/guide/en/elasticsearch/reference/7.7/query-dsl-geo-polygon-query.html, 原文档版权归 www.elastic.co 所有
本地英文版地址: ../en/query-dsl-geo-polygon-query.html
本地英文版地址: ../en/query-dsl-geo-polygon-query.html
重要: 此版本不会发布额外的bug修复或文档更新。最新信息请参考 当前版本文档。
返回地理位置坐标点仅落在多边形内的文档。这里有一个例子:
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} ] } } } } } }
查询选项
选项 | 描述 |
---|---|
|
可选,用来标识过滤器名称的字段 |
|
设置为 |
允许的格式
作为 lat lon 数组
格式为[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 字符串
格式为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
类型。
忽略未映射的字段 (ignore unmapped)
如果ignore_unmapped
选项设置为true
,将忽略未映射的字段,并且此查询不会匹配任何文档。
这在查询可能具有不同映射的多个索引时非常有用。
当设置为false
(默认值)时,如果字段未映射,查询将抛出异常。