Запрос по регулярному выражению
Возвращает документы, содержащие термины, соответствующие регулярному выражению.
Регулярное выражение — это способ сопоставления шаблонов в данных с помощью символов-заменителей, называемых операторами. Список операторов, поддерживаемых запросом regexp, см. в разделе Синтаксис регулярных выражений.
Пример запроса
Следующий поиск возвращает документы, где поле user.id содержит любой термин, начинающийся с k и заканчивающийся на y. Операторы .* соответствуют любому количеству символов, включая отсутствие символов. Соответствующие термины могут включать ky, kay и kimchy.
resp = client.search(
query={
"regexp": {
"user.id": {
"value": "k.*y",
"flags": "ALL",
"case_insensitive": True,
"max_determinized_states": 10000,
"rewrite": "constant_score_blended"
}
}
},
)
print(resp) response = client.search(
body: {
query: {
regexp: {
'user.id' => {
value: 'k.*y',
flags: 'ALL',
case_insensitive: true,
max_determinized_states: 10_000,
rewrite: 'constant_score_blended'
}
}
}
}
)
puts response const response = await client.search({
query: {
regexp: {
"user.id": {
value: "k.*y",
flags: "ALL",
case_insensitive: true,
max_determinized_states: 10000,
rewrite: "constant_score_blended",
},
},
},
});
console.log(response); GET /_search
{
"query": {
"regexp": {
"user.id": {
"value": "k.*y",
"flags": "ALL",
"case_insensitive": true,
"max_determinized_states": 10000,
"rewrite": "constant_score_blended"
}
}
}
} Параметры верхнего уровня для regexp
-
<field> - (Обязательно, объект) Поле, которое вы хотите искать.
Параметры для <field>
-
value -
(Обязательно, строка) Регулярное выражение для терминов, которые вы хотите найти в указанном поле
<field>. Список поддерживаемых операторов см. в разделе Синтаксис регулярных выражений.По умолчанию регулярные выражения ограничены 1000 символами. Вы можете изменить этот предел с помощью настройки
index.max_regex_length.Производительность запроса
regexpможет меняться в зависимости от предоставленного регулярного выражения. Для повышения производительности избегайте использования символов подстановки, таких как.*или.*?+, без префикса или суффикса. -
flags - (Необязательно, строка) Включает дополнительные операторы для регулярного выражения. Допустимые значения и дополнительную информацию см. в разделе Синтаксис регулярных выражений.
-
case_insensitive[7.10.0] Добавлен в 7.10.0. - (Необязательно, логическое значение) Разрешает нечувствительное к регистру сопоставление значения регулярного выражения со значениями индексированных полей, если установлено в true. По умолчанию false, что означает, что чувствительность к регистру сопоставления зависит от отображения базового поля.
-
max_determinized_states -
(Необязательно, целое число) Максимальное количество состояний автомата, необходимых для запроса. По умолчанию
10000.Elasticsearch использует Apache Lucene для интерпретации регулярных выражений. Lucene преобразует каждое регулярное выражение в конечный автомат, содержащий определенное количество детерминированных состояний.
Вы можете использовать этот параметр, чтобы предотвратить нежелательное потребление ресурсов при преобразовании. Возможно, вам понадобится увеличить этот предел для выполнения сложных регулярных выражений.
-
rewrite - (Необязательно, строка) Метод переписывания запроса. Допустимые значения и дополнительную информацию см. в
rewriteпараметре.
Примечания
Разрешение дорогостоящих запросов
Запросы по регулярным выражениям не будут выполнены, если search.allow_expensive_queries установлено в 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/8.17/query-dsl-regexp-query.html