

# 转换处理器
<a name="transformation-processors"></a>

转换处理器通过添加、复制、移动或移除字段来修改日志事件的结构。

## add\$1entries 处理器
<a name="add-entries-processor"></a>

向日志事件添加静态键值对。一个管道最多可以添加 1 个 `add_entries` 处理器。

**配置**  
使用以下参数配置 add\$1entries 处理器：

```
processor:
  - add_entries:
      entries:
        - key: "environment"
          value: "production"
          overwrite_if_key_exists: false
```参数

`entries`（必需）  
要添加到每个日志事件的键值对的数组。

`entries[].key`（必需）  
要添加到日志事件的字段名称。支持使用点表示法的嵌套字段。

`entries[].value`（必需）  
要分配给密钥的静态值。

`entries[].overwrite_if_key_exists`（可选）  
布尔值标志，用于确定密钥已经存在时的行为。默认值为 false。

`when`（可选）  
处理器级条件表达式。指定后，如果表达式的计算结果为 false，则会跳过整个处理器。最大长度为 256 个字符。请参阅[条件处理的表达式语法](conditional-processing.md)。

`entries[].when`（可选）  
条目级条件表达式。指定后，如果表达式的计算结果为 false，则仅跳过此条目。最大长度为 256 个字符。请参阅[条件处理的表达式语法](conditional-processing.md)。

`entries[].when_else`（可选）  
仅当同一处理器中的其他 `when` 条件都不匹配时，才会执行的回退条目。表达式值确定要考虑的 `when` 条件。最大长度为 256 个字符。请参阅[条件处理的表达式语法](conditional-processing.md)。

## copy\$1values 处理器
<a name="copy-values-processor"></a>

将值从一个字段复制到另一个字段。一个管道最多可以添加 1 个 `copy_values` 处理器。

**配置**  
使用以下参数配置 copy\$1values 处理器：

```
processor:
  - copy_values:
      entries:
        - from_key: "user_id"
          to_key: "backup_user"
          overwrite_if_to_key_exists: false
```参数

`entries`（必需）  
要对每个日志事件执行的复制操作数组。

`entries[].from_key`（必需）  
要从中复制值的字段名称。对嵌套字段使用点表示法。

`entries[].to_key`（必需）  
要将值复制到的字段名称。如果使用点表示法，将创建嵌套结构。

`entries[].overwrite_if_to_key_exists`（可选）  
目标字段已经存在时，控制行为的布尔值标志。默认值为 false。

`when`（可选）  
处理器级条件表达式。指定后，如果表达式的计算结果为 false，则会跳过整个处理器。最大长度为 256 个字符。请参阅[条件处理的表达式语法](conditional-processing.md)。

`entries[].when`（可选）  
条目级条件表达式。指定后，如果表达式的计算结果为 false，则仅跳过此条目。最大长度为 256 个字符。请参阅[条件处理的表达式语法](conditional-processing.md)。

`entries[].when_else`（可选）  
仅当同一处理器中的其他 `when` 条件都不匹配时，才会执行的回退条目。表达式值确定要考虑的 `when` 条件。最大长度为 256 个字符。请参阅[条件处理的表达式语法](conditional-processing.md)。

## delete\$1entries 处理器
<a name="delete-entries-processor"></a>

从日志事件中移除指定字段。

**配置**  
使用以下参数配置 delete\$1entris 处理器：

```
processor:
  - delete_entries:
      with_keys: ["temp_field", "debug_info"]
```参数

`with_keys`（必需）  
要从每个日志事件中移除的字段名称数组。支持使用点表示法删除嵌套字段。

`when`（可选）  
用于确定此处理器是否执行的条件表达式。最大长度为 256 个字符。请参阅[条件处理的表达式语法](conditional-processing.md)。

## move\$1keys 处理器
<a name="move-keys-processor"></a>

将字段从一个位置移动到另一个位置。

**配置**  
使用以下参数配置 move\$1keys 处理器：

```
processor:
  - move_keys:
      entries:
        - from_key: "old_field"
          to_key: "new_field"
          overwrite_if_to_key_exists: true
```参数

`entries`（必需）  
移动操作数组。最多 5 个条目。

`entries[].from_key`（必需）  
来源字段名称。最多 128 个字符。

`entries[].to_key`（必需）  
目标字段名称。最多 128 个字符。

`entries[].overwrite_if_to_key_exists`（可选）  
是否覆盖现有的目标字段。

`when`（可选）  
处理器级条件表达式。指定后，如果表达式的计算结果为 false，则会跳过整个处理器。最大长度为 256 个字符。请参阅[条件处理的表达式语法](conditional-processing.md)。

`entries[].when`（可选）  
条目级条件表达式。指定后，如果表达式的计算结果为 false，则仅跳过此条目。最大长度为 256 个字符。请参阅[条件处理的表达式语法](conditional-processing.md)。

`entries[].when_else`（可选）  
仅当同一处理器中的其他 `when` 条件都不匹配时，才会执行的回退条目。表达式值确定要考虑的 `when` 条件。最大长度为 256 个字符。请参阅[条件处理的表达式语法](conditional-processing.md)。

## flatten 处理器
<a name="flatten-processor"></a>

展平嵌套对象结构。

**配置**  
使用以下参数配置 flatten 处理器：

```
processor:
  - flatten:
      source: "metadata"
      target: "flattened"
      remove_processed_fields: true
      exclude_keys: ["sensitive_data"]
```参数

`source`（必需）  
包含要展平的嵌套对象的字段。

`target`（必需）  
展平密钥的目标字段前缀。

`remove_processed_fields`（可选）  
展平后是否移除原始嵌套字段。

`exclude_keys`（可选）  
要从展平中排除的键数组。最多 20 个键，每个键最多可包含 128 个字符。

`when`（可选）  
用于确定此处理器是否执行的条件表达式。最大长度为 256 个字符。请参阅[条件处理的表达式语法](conditional-processing.md)。