Elasticsearch删除特殊字符(从非基于ASCII的语言中删除)

时间:2020-07-10 09:15:22

标签: regex elasticsearch

对于英语,我可以使用类似的东西

       "specialCharactersFilter": {
         "pattern": "[^A-Za-z0-9]",
         "type": "pattern_replace",
         "replacement": ""
       }
     }

删除非文本字符。

但是,对于亚洲人这样的非ASCII语言,上述过滤器会删除所有有效的非特殊字符。

如何从亚洲语言中删除特殊字符?

1 个答案:

答案 0 :(得分:2)

pattern_replace过滤器中使用的正则表达式样式似乎是java.util.regex

要删除除Unicode字母和十进制数字以外的任何其他字符,您可以使用

 "specialCharactersFilter": {
     "pattern": "[^\\p{L}\\p{Nd}]",
     "type": "pattern_replace",
     "replacement": ""
   }

要确保只保留ASCII数字并删除所有印地语,泰米尔语等数字,可以使用类似的变体

"pattern": "[^\\p{L}0-9]"

请参见regex demo