Regex (сокращение от regular expression) - это метод поиска с использованием последовательности символов, определяющих шаблон поиска. Например, gray|grey найдет оба слова gray и grey. Regex следует осторожно использовать в скриптах painless, поскольку некоторые выражения могут работать очень медленно и требовать много ресурсов для выполнения. По этой причине в скриптах painless regex по умолчанию отключен.
Если вы решили включить regex, то помните о следующих правилах: выражения должны по возможности использовать якоря (^ или $) для обозначения начала или конца текстовой строки и никогда не должны содержать ведущего подстановочного символа (*) (или просто 1 символ и подстановочный знак), поскольку это подразумевает поиск по всем терминам в наборе. В общем случае также следует стараться как можно точнее определять, какие и сколько символов могут совпадать.
Как решить эту проблему
По умолчанию regex в OpenSearch отключен, поэтому, если он был включен на вашем кластере, это может быть связано с определенными причинами. Следует помнить, что использование regex - при правильной реализации - вполне законно. Проверьте скрипты, используемые в вашем приложении, чтобы определить, используется ли regex. Можно поискать безболезненный оператор regex "=~".
Чтобы полностью исключить использование regex-скриптов, можно восстановить настройку по умолчанию для всех узлов в файле opensearch.yml (она не может быть обновлена динамически):
1 | script.painless.regex.enabled: false |