Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Guide [7.17] ›Агрегирования ›Агрегирования метрик

Агрегирование гео-центроида

Агрегирование метрик, которое вычисляет взвешенный центроид из всех координатных значений для гео-полей.

Пример:

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" 
      }
    }
  }
}

Агрегирование geo_centroid определяет поле, которое необходимо использовать для вычисления центроида. (ПРИМЕЧАНИЕ: поле должно быть типа Geopoint)

Вышеприведенное агрегирование демонстрирует, как вычислить центроид поля расположения для всех документов с типом преступления «кража».

Ответ на вышеуказанное агрегирование:

{
  ...
  "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 в качестве под-агрегирования к агрегированию по корзинам терминов для поиска центрального расположения музеев в каждом городе.

Ответ на вышеуказанное агрегирование:

{
  ...
  "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_shape

Метрика центроида для гео-форм более сложная, чем для точек. Центроид определенной корзины агрегирования, содержащей формы, является центроидом формы наивысшей размерности в корзине. Например, если корзина содержит формы, состоящие из многоугольников и линий, то линии не влияют на метрику центроида. Центроид каждой формы типа рассчитывается по-разному. Области и окружности, полученные с помощью Circle, обрабатываются как многоугольники.

Тип геометрии Вычисление центроида

[Много]Точка

взвешенное среднее арифметическое всех координат

[Много]Линия

взвешенное среднее арифметическое всех центроидов каждого сегмента, где вес каждого сегмента равен его длине в градусах

[Много]Многоугольник

взвешенное среднее арифметическое всех центроидов всех треугольников многоугольника, где треугольники образуются каждыми двумя последовательными вершинами и начальной точкой. дыры имеют отрицательные веса. веса представляют собой площадь треугольника в deg^2

Коллекция геометрий

Центроид всех базовых геометрий наибольшей размерности. Если многоугольники и линии и/или точки, то линии и/или точки игнорируются. Если линии и точки, то точки игнорируются

Пример:

PUT /places
{
  "mappings": {
    "properties": {
      "geometry": {
        "type": "geo_shape"
      }
    }
  }
}

POST /places/_bulk?refresh
{"index":{"_id":1}}
{"name": "NEMO Science Museum", "geometry": "POINT(4.912350 52.374081)" }
{"index":{"_id":2}}
{"name": "Sportpark De Weeren", "geometry": { "type": "Polygon", "coordinates": [ [ [ 4.965305328369141, 52.39347642069457 ], [ 4.966979026794433, 52.391721758934835 ], [ 4.969425201416015, 52.39238958618537 ], [ 4.967944622039794, 52.39420969150824 ], [ 4.965305328369141, 52.39347642069457 ] ] ] } }

POST /places/_search?size=0
{
  "aggs": {
    "centroid": {
      "geo_centroid": {
        "field": "geometry"
      }
    }
  }
}
{
  ...
  "aggregations": {
    "centroid": {
      "location": {
        "lat": 52.39296147599816,
        "lon": 4.967404240742326
      },
      "count": 2
    }
  }
}

Использование geo_centroid как под-агрегирования geohash_grid

Агрегирование geohash_grid помещает документы, а не отдельные гео-точки, в корзины. Если поле geo_point документа содержит несколько значений, документ может быть назначен нескольким корзинам, даже если одна или несколько его гео-точек находятся за пределами границ корзины.

Если также используется под-агрегирование geocentroid, каждый центроид рассчитывается, используя все гео-точки в корзине, включая те, которые находятся за пределами границ корзины. Это может привести к центроидам за пределами границ корзины.

© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/7.17/search-aggregations-metrics-geocentroid-aggregation.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API