原英文版地址: 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(默认值)时,如果字段未映射,查询将抛出异常。