> For the complete documentation index, see [llms.txt](https://xiaoxiami.gitbook.io/elasticsearch/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://xiaoxiami.gitbook.io/elasticsearch/ji-chu/33-analysisfen-679029/336character-filtersff08-zi-fu-guo-lv-qi-ff09/mapping-character-filter.md).

# Mapping Character Filter(字符替换映射)

**Mapping Character Filter**接收键和值映射作为配置参数，每当在预处理过程中遇到与键值映射中的键相同的字符串时，就会使用该键对应的值去替换它。

原始文本中的字符串和键值映射中的键的匹配是贪心的，在对给定的文本进行预处理过程中如果配置的键值映射存在包含关系，会优先匹配最长键。可以用空字符串进行替换。

## 配置 <a href="#mappingcharacterfilter-pei-zhi" id="mappingcharacterfilter-pei-zhi"></a>

| 参数名称            | 参数说明                                                   |
| --------------- | ------------------------------------------------------ |
| `mappings`      | 一组映射，每个元素的格式为key => value。                             |
| `mappings_path` | 一个相对或者绝对的文件路径，指向一个每行包含一个 key =>value 映射的UTF-8编码文本映射文件。 |

以上两个参数必须提供一个。

在下面的例子中，我们将使用**Mapping Character Filter**来实现用拉丁语数字和阿拉伯数字的等价替换：

```
PUT my_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_analyzer": {
          "tokenizer": "keyword",
          "char_filter": [
            "my_char_filter"
          ]
        }
      },
      "char_filter": {
        "my_char_filter": {
          "type": "mapping",
          "mappings": [ "٠ => 0","١ => 1","٢ => 2","٣ => 3","٤ => 4","٥ => 5","٦ => 6","٧ => 7","٨ => 8", "٩ => 9"]
        }
      }
    }
  }
}

POST my_index/_analyze
{
  "analyzer": "my_analyzer",
  "text": "My license plate is ٢٥٠١٥"
}
```

上面的案例将会返回如下结果：

```
[ I'm, delighted, about, it, _sad_ ]
```
