Картирование фильтра символов
Фильтр символов mapping принимает карту ключей и значений. Встретив строку символов, совпадающую с ключом, он заменяет её значением, соответствующим этому ключу.
Сопоставление жадное; совпадающий с текущей точкой наибольший шаблон побеждает. Разрешены замены на пустую строку.
Фильтр mapping использует MappingCharFilter из Lucene.
Пример
Следующий запрос API анализа использует фильтр mapping для преобразования индо-арабских цифр (٠١٢٣٤٥٦٧٨٩) в их арабско-латинские эквиваленты (0123456789), изменяя текст My license plate is ٢٥٠١٥ на My license plate is 25015.
GET /_analyze
{
"tokenizer": "keyword",
"char_filter": [
{
"type": "mapping",
"mappings": [
"٠ => 0",
"١ => 1",
"٢ => 2",
"٣ => 3",
"٤ => 4",
"٥ => 5",
"٦ => 6",
"٧ => 7",
"٨ => 8",
"٩ => 9"
]
}
],
"text": "My license plate is ٢٥٠١٥"
} Фильтр генерирует следующий текст:
[ My license plate is 25015 ]
Настраиваемые параметры
-
mappings -
(Обязательный*, массив строк) Массив отображений, каждый элемент которого имеет вид
key => value.Должен быть указан либо этот, либо параметр
mappings_path. -
mappings_path -
(Обязательный*, строка) Путь к файлу, содержащему
key => valueотображения.Этот путь должен быть абсолютным или относительным к расположению
config, а файл должен быть закодирован в UTF-8. Каждое отображение в файле должно разделяться символом новой строки.Должен быть указан либо этот, либо параметр
mappings.
Настройка и добавление в анализатор
Для настройки фильтра mappings дублируйте его, чтобы создать основу для нового пользовательского фильтра символов. Вы можете изменить фильтр, используя его настраиваемые параметры.
Следующий запрос API создания индекса настраивает новый пользовательский анализатор с использованием пользовательского фильтра mappings, my_mappings_char_filter.
Фильтр my_mappings_char_filter заменяет эмодзи :) и :( на текстовые эквиваленты.
PUT /my-index-000001
{
"settings": {
"analysis": {
"analyzer": {
"my_analyzer": {
"tokenizer": "standard",
"char_filter": [
"my_mappings_char_filter"
]
}
},
"char_filter": {
"my_mappings_char_filter": {
"type": "mapping",
"mappings": [
":) => _happy_",
":( => _sad_"
]
}
}
}
}
} Следующий запрос API анализа использует пользовательский my_mappings_char_filter для замены :( на _sad_ в тексте I'm delighted about it :(.
GET /my-index-000001/_analyze
{
"tokenizer": "keyword",
"char_filter": [ "my_mappings_char_filter" ],
"text": "I'm delighted about it :("
} Фильтр генерирует следующий текст:
[ I'm delighted about it _sad_ ]
© 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/analysis-mapping-charfilter.html