Фильтр токенов Pattern replace
Использует регулярное выражение для сопоставления и замены подстрок токенов.
Фильтр pattern_replace использует синтаксис регулярных выражений Java. По умолчанию фильтр заменяет соответствующие подстроки пустой подстрокой (""). Подстроки замены могут использовать синтаксис Java $g для ссылки на группы захвата из исходного текста токена.
Неправильно составленное регулярное выражение может работать медленно или возвращать ошибку StackOverflowError, вызывая внезапное завершение работы узла, выполняющего выражение.
Узнайте больше о патологических регулярных выражениях и способах их избежания.
Этот фильтр использует PatternReplaceFilter Lucene.
Пример
Следующий запрос аналитического API использует фильтр pattern_replace для добавления watch к подстроке dog в foxes jump lazy dogs.
GET /_analyze
{
"tokenizer": "whitespace",
"filter": [
{
"type": "pattern_replace",
"pattern": "(dog)",
"replacement": "watch$1"
}
],
"text": "foxes jump lazy dogs"
} Фильтр создает следующие токены.
[ foxes, jump, lazy, watchdogs ]
Настраиваемые параметры
-
all - (Необязательно, логический тип) Если
true, все подстроки, соответствующие регулярному выражению параметраpattern, заменяются. Еслиfalse, фильтр заменяет только первую соответствующую подстроку в каждом токе. По умолчанию значениеtrue. -
pattern - (Обязательно, строка) Регулярное выражение, записанное в синтаксисе регулярных выражений Java. Фильтр заменяет подстроки токенов, соответствующие этому шаблону, на подстроку в параметре
replacement. -
replacement - (Необязательно, строка) Подстрока замены. По умолчанию пустая подстрока (
"").
Настройка и добавление в анализатор
Чтобы настроить фильтр pattern_replace, дублируйте его, чтобы создать основу для нового пользовательского фильтра токенов. Вы можете изменить фильтр, используя его настраиваемые параметры.
Следующий запрос создания индекса настраивает новый пользовательский анализатор с использованием пользовательского фильтра токенов pattern_replace, my_pattern_replace_filter.
Фильтр my_pattern_replace_filter использует регулярное выражение [£|€] для сопоставления и удаления символов валюты £ и €. Параметр all фильтра равен false, что означает, что удаляется только первый соответствующий символ в каждом токе.
PUT /my-index-000001
{
"settings": {
"analysis": {
"analyzer": {
"my_analyzer": {
"tokenizer": "keyword",
"filter": [
"my_pattern_replace_filter"
]
}
},
"filter": {
"my_pattern_replace_filter": {
"type": "pattern_replace",
"pattern": "[£|€]",
"replacement": "",
"all": false
}
}
}
}
}
© 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-pattern_replace-tokenfilter.html