今天的文章要介紹的是Geo Bounds(地理邊界經緯度)以及Geo Centroid(地理質心經緯度)
今天使用官方文件的資料進行測試
這種聚合方式會返回包含兩個點的經緯度,左上(top_left)及右下(bottom_right),這兩點所圍成的框框會包含符合字段的所有經緯度
可調參數wrap_longitude:是否允許邊界框與國際日期線重疊,預設為true
aggs query:
{
"aggs": {
"stats": {
"geo_bounds": {
"field": "location",
"wrap_longitude": true
}
}
}
}
結果:
"aggregations" : {
"stats" : {
"bounds" : {
"top_left" : {
"lat" : 52.374080987647176,
"lon" : 2.3269999679178
},
"bottom_right" : {
"lat" : 48.85999997612089,
"lon" : 4.91472196765244
}
}
}
}
這種聚合方式會返回一個點的經緯度,返回的點代表的是包含字段的地理座標的質心,有點類似中心點
aggs query:
{
"aggs": {
"centroid": {
"geo_centroid": {
"field": "location"
}
}
}
}
結果:
"aggregations" : {
"centroid" : {
"location" : {
"lat" : 51.00982965203002,
"lon" : 3.9662131341174245
},
"count" : 6
}
}
計算城市的中心地理位置
aggs query:
{
"aggs": {
"cities": {
"terms": { "field": "city" },
"aggs": {
"centroid": {
"geo_centroid": { "field": "location" }
}
}
}
}
}
結果:
"aggregations" : {
"cities" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [
{
"key" : "Amsterdam",
"doc_count" : 3,
"centroid" : {
"location" : {
"lat" : 52.371655656024814,
"lon" : 4.909563297405839
},
"count" : 3
}
},
{
"key" : "Paris",
"doc_count" : 2,
"centroid" : {
"location" : {
"lat" : 48.86055548675358,
"lon" : 2.3316944623366
},
"count" : 2
}
},
{
"key" : "Antwerp",
"doc_count" : 1,
"centroid" : {
"location" : {
"lat" : 51.22289997059852,
"lon" : 4.40519998781383
},
"count" : 1
}
}
]
}
}
今天文章就到這邊,謝謝大家