Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Guide [7.17] ›Продуктовые конвейеры ›Справочник по обработчикам ingest

Обработчик dot expander

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

Таблица 14. Параметры расширения dot

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

field

да

-

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

path

нет

-

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

override

нет

false

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

description

нет

-

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

if

нет

-

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

ignore_failure

нет

false

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

on_failure

нет

-

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

tag

нет

-

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

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

Например, обработчик dot expand преобразует этот документ:

{
  "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": "*"
  }
}

Обработчик dot expand преобразует этот документ:

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

в:

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

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

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

Обработчик dot expand преобразует этот документ:

{
  "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/7.17/dot-expand-processor.html

Spec-Zone.ru

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