在指定映射字符过滤器时使用正则表达式
Using regular expression while specifying mapping char filter
ElasticSearch 支持mapping char filter,其中可以指定一个键及其对应的值。我想在key中使用正则表达式。
我正在尝试的正则表达式基本上是捕获所有以 I
结尾的大写符号并将它们转换为以 l 结尾的字符串。所以这看起来像
ABCI => ABCl
I
之前的字符串不固定,所以我在写正则表达式。
我已经将表达式的左侧部分计算为 [A-Z]+I
但我无法决定应该在右侧写什么以便我可以将字符串 ABC
捕获为嗯。
我的问题是我们可以在映射字符过滤器中使用正则表达式吗?如果是,那么我该如何编写相关的正则表达式(尤其是右侧部分)。
使用Pattern Replace Char Filter:
{
"settings": {
"analysis": {
"analyzer": {
"my_analyzer": {
"tokenizer": "standard",
"char_filter": [
"my_char_filter"
]
}
},
"char_filter": {
"my_char_filter": {
"type": "pattern_replace",
"pattern": "([A-Z]+)(I)$", ==> Patterm containg uppaer case characters ending with I
"replacement": "" => Replacing Group 1 with '1'
}
}
}
}
}
希望对您有所帮助!!
ElasticSearch 支持mapping char filter,其中可以指定一个键及其对应的值。我想在key中使用正则表达式。
我正在尝试的正则表达式基本上是捕获所有以 I
结尾的大写符号并将它们转换为以 l 结尾的字符串。所以这看起来像
ABCI => ABCl
I
之前的字符串不固定,所以我在写正则表达式。
我已经将表达式的左侧部分计算为 [A-Z]+I
但我无法决定应该在右侧写什么以便我可以将字符串 ABC
捕获为嗯。
我的问题是我们可以在映射字符过滤器中使用正则表达式吗?如果是,那么我该如何编写相关的正则表达式(尤其是右侧部分)。
使用Pattern Replace Char Filter:
{
"settings": {
"analysis": {
"analyzer": {
"my_analyzer": {
"tokenizer": "standard",
"char_filter": [
"my_char_filter"
]
}
},
"char_filter": {
"my_char_filter": {
"type": "pattern_replace",
"pattern": "([A-Z]+)(I)$", ==> Patterm containg uppaer case characters ending with I
"replacement": "" => Replacing Group 1 with '1'
}
}
}
}
}
希望对您有所帮助!!