Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Guide [7.17] ›Интеграционные конвейеры ›Обогащение данных

Пример: Обогащение данных на основе геолокации

geo_match политики обогащения сопоставляют обогащённые данные с поступающими документами на основе географического местоположения, используя geo_shape запрос.

В следующем примере создается geo_match политика обогащения, которая добавляет почтовые индексы в поступающие документы на основе набора координат. Затем geo_match политика обогащения добавляется в процессор в интеграционном конвейере.

Используйте API создания индекса для создания исходного индекса, содержащего как минимум одно поле geo_shape.

PUT /postal_codes
{
  "mappings": {
    "properties": {
      "location": {
        "type": "geo_shape"
      },
      "postal_code": {
        "type": "keyword"
      }
    }
  }
}

Используйте API индексирования, чтобы добавить обогащённые данные в этот исходный индекс.

PUT /postal_codes/_doc/1?refresh=wait_for
{
  "location": {
    "type": "envelope",
    "coordinates": [ [ 13.0, 53.0 ], [ 14.0, 52.0 ] ]
  },
  "postal_code": "96598"
}

Используйте API создания политики обогащения, чтобы создать политику обогащения с типом политики geo_match. Эта политика должна содержать:

  • Один или несколько исходных индексов
  • Поле match_field, поле geo_shape из исходных индексов, используемое для сопоставления поступающих документов
  • Поля обогащения из исходных индексов, которые нужно добавить к поступающим документам
PUT /_enrich/policy/postal_policy
{
  "geo_match": {
    "indices": "postal_codes",
    "match_field": "location",
    "enrich_fields": [ "location", "postal_code" ]
  }
}

Используйте API выполнения политики обогащения для создания индекса обогащения для политики.

POST /_enrich/policy/postal_policy/_execute

Используйте API создания или обновления конвейера, чтобы создать интеграционный конвейер. В конвейере добавьте процессор обогащения, который включает:

  • Вашу политику обогащения.
  • field поступающих документов, используемое для сопоставления геоформы документов из индекса обогащения.
  • Поле target_field, используемое для хранения добавленных данных обогащения для поступающих документов. Это поле содержит поля match_field и enrich_fields, указанные в вашей политике обогащения.
  • shape_relation, который указывает, как процессор сопоставляет геоформы в поступающих документах с геоформами в документах из индекса обогащения. См. Пространственные отношения для допустимых вариантов и дополнительной информации.
PUT /_ingest/pipeline/postal_lookup
{
  "processors": [
    {
      "enrich": {
        "description": "Add 'geo_data' based on 'geo_location'",
        "policy_name": "postal_policy",
        "field": "geo_location",
        "target_field": "geo_data",
        "shape_relation": "INTERSECTS"
      }
    }
  ]
}

Используйте интеграционный конвейер для индексирования документа. Поступающий документ должен содержать поле field, указанное в вашем процессоре обогащения.

PUT /users/_doc/0?pipeline=postal_lookup
{
  "first_name": "Mardy",
  "last_name": "Brown",
  "geo_location": "POINT (13.5 52.5)"
}

Для проверки того, что процессор обогащения сопоставил и добавил соответствующие данные поля, используйте API получения для просмотра индексированного документа.

GET /users/_doc/0

API возвращает следующий ответ:

{
  "found": true,
  "_index": "users",
  "_type": "_doc",
  "_id": "0",
  "_version": 1,
  "_seq_no": 55,
  "_primary_term": 1,
  "_source": {
    "geo_data": {
      "location": {
        "type": "envelope",
        "coordinates": [[13.0, 53.0], [14.0, 52.0]]
      },
      "postal_code": "96598"
    },
    "first_name": "Mardy",
    "last_name": "Brown",
    "geo_location": "POINT (13.5 52.5)"
  }
}

© 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/geo-match-enrich-policy-type.html

Spec-Zone.ru

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