

# 字符串操作处理器
<a name="string-processors"></a>

字符串处理器通过大小写转换、修剪和模式匹配等操作修改日志事件中的文本值。

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

将指定字段转换为小写。

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

```
processor:
  - lowercase_string:
      with_keys: ["status", "method"]
```参数

`with_keys`（必需）  
要转换为小写的字段名称数组。仅处理字符串值。

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

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

将指定字段转换为大写。

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

```
processor:
  - uppercase_string:
      with_keys: ["status_code", "method"]
```参数

`with_keys`（必需）  
要转换为大写的字段名称数组。仅处理字符串值。

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

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

从指定字段中移除前导和尾随空格。

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

```
processor:
  - trim_string:
      with_keys: ["message", "user_input"]
```参数

`with_keys`（必需）  
要从中修剪空格的字段名称数组。仅处理字符串值。

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

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

使用正则表达式执行字符串替换。

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

```
processor:
  - substitute_string:
      entries:
        - source: "message"
          from: "ERROR"
          to: "WARN"
```参数

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

`entries[].source`（必需）  
要对其执行字符串替换的字段。

`entries[].from`（必需）  
要匹配和替换的正则表达式模式。

`entries[].to`（必需）  
匹配模式的替换字符串。

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

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

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

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

将字段值截断为指定长度。

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

```
processor:
  - truncate:
      source_keys: ["message", "description"]
      length: 100
      start_at: 0
```参数

`source_keys`（必需）  
要截断的字段名称数组。每个字段名称最多 128 个字符。

`length`（可选）  
截断后的最大长度。范围：1-8192。

`start_at`（可选）  
截断的起始位置。范围：0-8192。默认值为 0。

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

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

使用正则表达式提取值。

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

```
processor:
  - extract_value:
      entries:
        - source: "message"
          target: "extracted_data"
          from: "user=(?<user>\\w+)"
          to: "${user}"
          target_type: "string"
```参数

`entries`（必需）  
提取操作数组。最多 20 个条目。

`entries[].source`（必需）  
要提取的字段。最多 128 个字符。

`entries[].target`（必需）  
提取值的目标字段。最多 128 个字符。

`entries[].from`（必需）  
正则表达式模式。最多 128 个字符。

`entries[].to`（必需）  
具有捕获组的替换模式。最多 128 个字符。

`entries[].target_type`（可选）  
目标数据类型（“integer”、“double”、“string”、“boolean”）。

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

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

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

## convert\$1entry\$1type 处理器
<a name="convert-entry-type-processor"></a>

在不同的数据类型之间转换字段值。

**配置**  
使用以下参数配置 convert\$1entry\$1type 处理器：

```
processor:
  - convert_entry_type:
      key: "count"
      type: "integer"
```参数

`key`（必需）  
要转换的单个字段名称。

`type`（必需）  
目标数据类型。选项：“integer”、“double”、“string”、“boolean”。

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

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

解析和格式化日期/时间字段。

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

```
processor:
  - date:
      match:
        - key: "timestamp"
          patterns: ["yyyy-MM-dd'T'HH:mm:ss.SSSSSS'Z'"]
      destination: "@timestamp"
      source_timezone: "UTC"
      destination_timezone: "America/New_York"
```参数

`match`（必需）  
匹配配置的日期数组。最多 10 个条目。

`match[].key`（必需）  
包含日期字符串的字段。最多 128 个字符。

`match[].patterns`（必需）  
可尝试的日期格式模式数组。最多 5 个模式，每个模式最多可包含 256 个字符。

`destination`（可选）  
所有已解析日期的单个目标字段。最多 128 个字符。

`source_timezone`（可选）  
用于解析的来源时区。

`destination_timezone`（可选）  
输出的目标时区。

`output_format`（可选）  
输出日期格式。最多 64 个字符。

`destination_type`（可选）  
输出类型 –“timestampz”、“long”或“string”。

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

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

使用模式匹配功能提取结构化数据。

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

```
processor:
  - dissect:
      map:
        message: "%{timestamp} %{level}"
```参数

`map`（必需）  
使用剖析模式进行字段映射。

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

## list\$1to\$1map 处理器
<a name="list-to-map-processor"></a>

将数组字段转换为映射结构。

**配置**  
使用以下参数配置 list\$1to\$1map 处理器：

```
processor:
  - list_to_map:
      source: "tags"
      key: "name"
      value_key: "value"
      target: "tag_map"
```参数

`source`（必需）  
包含数组数据的字段。最多 128 个字符。

`key`（必需）  
用作映射键的字段名称。最多 128 个字符。

`value_key`（可选）  
用作映射值的字段名称。最多 128 个字符。

`target`（可选）  
映射结构的目标字段。最多 128 个字符。

`flatten`（可选）  
是否对生成的映射结构进行扁平化。

`flattened_element`（可选）  
展平时要使用哪个元素（“first”或“last”）。

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

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

重命名日志事件中的字段。

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

```
processor:
  - rename_keys:
      entries:
        - from_key: "old_name"
          to_key: "new_name"
          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)。

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

仅从事件中选择指定的字段。

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

```
processor:
  - select_entries:
      include_keys: ["timestamp", "level", "message"]
```参数

`include_keys`（必需）  
要保留的字段名称数组。最多 50 个键，每个键最多可包含 128 个字符。

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

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

使用查找表转换字段值。

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

```
processor:
  - translate:
      mappings:
        - source: "status_code"
          targets:
            - target: "status_text"
              map:
                "200": "OK"
                "404": "Not Found"
```参数

`mappings`（必需）  
翻译配置数组。最多 10 个映射。

`mappings[].source`（必需）  
要翻译的字段。最多 128 个字符。

`mappings[].targets`（必需）  
目标配置数组。最多 10 个目标。

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

`mappings[].targets[].map`（必需）  
翻译映射。最多 100 个条目，每个条目最多可包含 512 个字符。

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