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

Пример: Обогащение данных путем сопоставления значения с диапазоном

Политика обогащения использует запрос для сопоставления числа, даты или IP-адреса в поступающих документах с диапазоном того же типа в индексе обогащения. Сопоставление диапазона с диапазоном не поддерживается.

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

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

PUT /networks
{
  "mappings": {
    "properties": {
      "range": { "type": "ip_range" },
      "name": { "type": "keyword" },
      "department": { "type": "keyword" }
    }
  }
}

Следующий запрос API индексации индексирует новый документ в этот индекс.

PUT /networks/_doc/1?refresh=wait_for
{
  "range": "10.100.0.0/16",
  "name": "production",
  "department": "OPS"
}

Используйте API создания политики обогащения для создания политики обогащения с типом политики range. Эта политика должна включать:

  • Один или несколько исходных индексов
  • Поле match_field из исходных индексов, используемое для сопоставления входящих документов
  • Поля обогащения из исходных индексов, которые вы хотите добавить к входящим документам

Поскольку мы планируем обогащать документы на основе IP-адреса, поле match_field политики должно быть полем ip_range.

PUT /_enrich/policy/networks-policy
{
  "range": {
    "indices": "networks",
    "match_field": "range",
    "enrich_fields": ["name", "department"]
  }
}

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

POST /_enrich/policy/networks-policy/_execute

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

  • Вашу политику обогащения.
  • field входящих документов, используемых для сопоставления документов из индекса обогащения.
  • target_field, используемый для хранения добавленных данных обогащения для входящих документов. Это поле содержит match_field и enrich_fields, указанные в вашей политике обогащения.
PUT /_ingest/pipeline/networks_lookup
{
  "processors" : [
    {
      "enrich" : {
        "description": "Add 'network' data based on 'ip'",
        "policy_name": "networks-policy",
        "field" : "ip",
        "target_field": "network",
        "max_matches": "10"
      }
    }
  ]
}

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

PUT /my-index-000001/_doc/my_id?pipeline=networks_lookup
{
  "ip": "10.100.34.1"
}

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

GET /my-index-000001/_doc/my_id

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

{
  "_index" : "my-index-000001",
  "_type" : "_doc",
  "_id" : "my_id",
  "_version" : 1,
  "_seq_no" : 0,
  "_primary_term" : 1,
  "found" : true,
  "_source" : {
    "ip" : "10.100.34.1",
    "network" : [
      {
        "name" : "production",
        "range" : "10.100.0.0/16",
        "department" : "OPS"
      }
    ]
  }
}

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

Spec-Zone.ru

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