Обработчик расширения точек
Расширяет поле с точками в поле объекта. Этот обработчик позволяет обращаться к полям с точками в имени другими обработчиками в конвейере. В противном случае к этим полям не может обратиться ни один обработчик.
Таблица 15. Параметры расширения точек
| Имя | Обязательно | Значение по умолчанию | Описание |
|---|---|---|---|
| да | - | Поле, которое расширяется в поле объекта. Если установлено значение |
| нет | - | Поле, содержащее поле для расширения. Требуется только если поле для расширения является частью другого поля объекта, потому что опция |
| нет | false | Управляет поведением при наличии уже существующего вложенного объекта, который конфликтует с расширенным полем. При значении |
| нет | - | Описание обработчика. Полезно для описания цели обработчика или его конфигурации. |
| нет | - | Условное выполнение обработчика. См. Условное выполнение обработчика. |
| нет |
| Игнорировать сбои для обработчика. См. Обработка ошибок конвейера. |
| нет | - | Обрабатывать сбои для обработчика. См. Обработка ошибок конвейера. |
| нет | - | Идентификатор обработчика. Полезен для отладки и метрик. |
{
"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