Elasticsearch——Geopoint字段类型
程序员文章站
2022-07-09 15:46:04
...
geo_point类型的字段接受经纬度对,可以使用:
-
在边界框内、距离中心点一定距离内、多边形内或geo_shape查询内查找地质点的步骤。
-
按地理位置或距离中心点聚合文档。
-
将距离整合到文档的相关性得分中。
-
按距离对文档进行排序。
指定geopoint点有五种方式,如下所示:
PUT my-index-000001
{
"mappings": {
"properties": {
"location": {
"type": "geo_point"
}
}
}
}
PUT my-index-000001/_doc/1
{
"text": "Geopoint as an object",
"location": { (1)
"lat": 41.12,
"lon": -71.34
}
}
PUT my-index-000001/_doc/2
{
"text": "Geopoint as a string",
"location": "41.12,-71.34" (2)
}
PUT my-index-000001/_doc/3
{
"text": "Geopoint as a geohash",
"location": "drm3btev3e86" (3)
}
PUT my-index-000001/_doc/4
{
"text": "Geopoint as an array",
"location": [ -71.34, 41.12 ] (3)
}
PUT my-index-000001/_doc/5
{
"text": "Geopoint as a WKT POINT primitive",
"location" : "POINT (-71.34 41.12)" (5)
}
GET my-index-000001/_search
{
"query": {
"geo_bounding_box": { (6)
"location": {
"top_left": {
"lat": 42,
"lon": -72
},
"bottom_right": {
"lat": 40,
"lon": -74
}
}
}
}
}
(1)geopoint表示为对象,使用lat和lon关键点。
(2)geopoint表示为字符串,格式为:“lat,lon”。
(3)geopoint表示为geohash。
(4)geopoint表示为 array的格式:[lon,lat]
(5)genpoint表示为 Well-Known Text Point ,用“Point(lon-lat)”格式。
(6)地理边界框查询,用于查找落在该框内的所有地理点。
注意:Geopoints 表示为数组或字符串
请注意,字符串genpoints按lat、lon顺序排列,而阵array geopoints按相反顺序排列:lon、lat。
最初,lat、lon用于数组和字符串,但数组格式在早期已更改,以符合GeoJSON使用的格式。
在脚本(scripts)中使用Geopoints
在scripts中访问某个geopoint的值时,该值将作为GeoPoint对象返回,从而允许分别访问.lat和.lon值:
def geopoint = doc['location'].value;
def lat = geopoint.lat;
def lon = geopoint.lon;
出于性能原因,最好直接访问lat/lon值:
def lat = doc['location'].lat;
def lon = doc['location'].lon;
上一篇: 老司机最爱 华为手环B3让沟通更方便
下一篇: ELK 安装Elasticsearch