Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Guide [8.17] ›Ingest pipelines ›Ingest processor reference

Обработчик расширения точек

Расширяет поле с точками в поле объекта. Этот обработчик позволяет обращаться к полям с точками в имени другими обработчиками в конвейере. В противном случае к этим полям не может обратиться ни один обработчик.

Таблица 15. Параметры расширения точек

Имя Обязательно Значение по умолчанию Описание

field

да

-

Поле, которое расширяется в поле объекта. Если установлено значение *, все поля верхнего уровня будут расширены.

path

нет

-

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

override

нет

false

Управляет поведением при наличии уже существующего вложенного объекта, который конфликтует с расширенным полем. При значении false обработчик объединит конфликты, объединив старые и новые значения в массив. При значении true значение из расширенного поля перезапишет существующее значение.

description

нет

-

Описание обработчика. Полезно для описания цели обработчика или его конфигурации.

if

нет

-

Условное выполнение обработчика. См. Условное выполнение обработчика.

ignore_failure

нет

false

Игнорировать сбои для обработчика. См. Обработка ошибок конвейера.

on_failure

нет

-

Обрабатывать сбои для обработчика. См. Обработка ошибок конвейера.

tag

нет

-

Идентификатор обработчика. Полезен для отладки и метрик.

{
  "dot_expander": {
    "field": "foo.bar"
  }
}

Например, обработчик расширения точек преобразует этот документ:

{
  "foo.bar" : "value"
}

в:

{
  "foo" : {
    "bar" : "value"
  }
}

Если уже существует поле bar, вложенное под foo, то этот обработчик объединяет поле foo.bar в него. Если поле является скалярным значением, то оно преобразуется в поле массива.

Например, следующий документ:

{
  "foo.bar" : "value2",
  "foo" : {
    "bar" : "value1"
  }
}

преобразуется обработчиком dot_expander в:

{
  "foo" : {
    "bar" : ["value1", "value2"]
  }
}

В отличие от ситуации, когда опция override установлена в true.

{
  "dot_expander": {
    "field": "foo.bar",
    "override": true
  }
}

В этом случае значение расширенного поля перезаписывает значение вложенного объекта.

{
  "foo" : {
    "bar" : "value2"
  }
}

Значение field также может быть установлено в *, чтобы расширить все имена полей с точками верхнего уровня:

{
  "dot_expander": {
    "field": "*"
  }
}

Обработчик расширения точек преобразует этот документ:

{
  "foo.bar" : "value",
  "baz.qux" : "value"
}

в:

{
  "foo" : {
    "bar" : "value"
  },
  "baz" : {
    "qux" : "value"
  }
}

Если поле с точками вложено в структуру без точек, используйте опцию path для навигации по структуре без точек:

{
  "dot_expander": {
    "path": "foo"
    "field": "*"
  }
}

Обработчик расширения точек преобразует этот документ:

{
  "foo" : {
    "bar.one" : "value",
    "bar.two" : "value"
  }
}

в:

{
  "foo" : {
    "bar" : {
      "one" : "value",
      "two" : "value"
    }
  }
}

Если любое поле вне поля-листа конфликтует с существующим полем с тем же именем, это поле необходимо переименовать предварительно.

Рассмотрим следующий документ:

{
  "foo": "value1",
  "foo.bar": "value2"
}

Затем поле foo необходимо переименовать перед применением обработчика dot_expander. Для того, чтобы поле foo.bar правильно расширилось в поле bar под полем foo, необходимо использовать следующий конвейер:

{
  "processors" : [
    {
      "rename" : {
        "field" : "foo",
        "target_field" : "foo.bar"
      }
    },
    {
      "dot_expander": {
        "field": "foo.bar"
      }
    }
  ]
}

Причина в том, что Ingest не знает, как автоматически преобразовать скалярное поле в поле объекта.

© 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/8.17/dot-expand-processor.html

Spec-Zone.ru

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