原英文版地址: https://www.elastic.co/guide/en/elasticsearch/reference/7.7/search-aggregations-metrics-geocentroid-aggregation.html, 原文档版权归 www.elastic.co 所有
本地英文版地址: ../en/search-aggregations-metrics-geocentroid-aggregation.html
本地英文版地址: ../en/search-aggregations-metrics-geocentroid-aggregation.html
重要: 此版本不会发布额外的bug修复或文档更新。最新信息请参考 当前版本文档。
根据 geo-point 字段的所有坐标值计算加权 矩心(centroid) 的度量聚合。
示例:
PUT /museums { "mappings": { "properties": { "location": { "type": "geo_point" } } } } POST /museums/_bulk?refresh {"index":{"_id":1}} {"location": "52.374081,4.912350", "city": "Amsterdam", "name": "NEMO Science Museum"} {"index":{"_id":2}} {"location": "52.369219,4.901618", "city": "Amsterdam", "name": "Museum Het Rembrandthuis"} {"index":{"_id":3}} {"location": "52.371667,4.914722", "city": "Amsterdam", "name": "Nederlands Scheepvaartmuseum"} {"index":{"_id":4}} {"location": "51.222900,4.405200", "city": "Antwerp", "name": "Letterenhuis"} {"index":{"_id":5}} {"location": "48.861111,2.336389", "city": "Paris", "name": "Musée du Louvre"} {"index":{"_id":6}} {"location": "48.860000,2.327000", "city": "Paris", "name": "Musée d'Orsay"} POST /museums/_search?size=0 { "aggs" : { "centroid" : { "geo_centroid" : { "field" : "location" } } } }
|
上面的聚合演示了如何计算博物馆(museum)的所有文档的 location(位置) 字段的矩心。
上面聚合的响应为:
{ ... "aggregations": { "centroid": { "location": { "lat": 51.00982965203002, "lon": 3.9662131341174245 }, "count": 6 } } }
当 geo_centroid
聚合作为其他桶聚合的子聚合时,会更有意思。
例如:
POST /museums/_search?size=0 { "aggs" : { "cities" : { "terms" : { "field" : "city.keyword" }, "aggs" : { "centroid" : { "geo_centroid" : { "field" : "location" } } } } } }
上面的示例使用 geo_centroid
作为 terms 桶聚合的子聚合,用于查找每个城市中博物馆的中心位置。
上面聚合的响应为:
{ ... "aggregations": { "cities": { "sum_other_doc_count": 0, "doc_count_error_upper_bound": 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 } } ] } } }
使用geo_centroid
作为geohash_grid
的子聚合
geohash_grid
聚合将文档而不是单个 geo-point 放入桶中。
如果文档的 geo_point
字段包含多值(multiple values),则该文档可以被分配给多个桶,即使一个或多个 geo-point 在桶边界之外。
如果还用了 geocentroid
子聚合,则使用桶中的所有 geo-point (包括桶边界之外的 geo-point )来计算每个矩心。这可能会导致矩心位于桶边界之外。