原英文版地址: https://www.elastic.co/guide/en/elasticsearch/reference/7.7/query-dsl-regexp-query.html, 原文档版权归 www.elastic.co 所有
本地英文版地址: ../en/query-dsl-regexp-query.html
本地英文版地址: ../en/query-dsl-regexp-query.html
重要: 此版本不会发布额外的bug修复或文档更新。最新信息请参考 当前版本文档。
返回包含匹配正则表达式的词项的文档。
正则表达式是一种使用占位符(称为运算符)来匹配数据模式的方法。
有关regexp查询支持的运算符列表,请参见正则表达式语法。
下面这个搜索返回user字段包含任何以k开头并以y结尾的词项的文档。
运算符.*匹配任何长度的任何字符,包括0个字符。
匹配的词项可以包含 ky、kay 和 kimchy。
GET /_search
{
"query": {
"regexp": {
"user": {
"value": "k.*y",
"flags" : "ALL",
"max_determinized_states": 10000,
"rewrite": "constant_score"
}
}
}
}
-
value -
(必需, string) 要在指定的
<field>中查找的词项的正则表达式。 支持的运算符列表,请参考正则表达式语法。默认情况下,正则表达式限制为1000个字符。 可以使用
index.max_regex_length设置来更改此限制。regexp查询的性能会因给定的正则表达式而不同。 要提高查询性能,应避免使用通配符模式,如.*或者.*?+,没有前缀或后缀。 -
flags - (可选, string) 为正则表达式启用可选的运算符。有效值及更多信息请参考正则表达式语法。
-
max_determinized_states -
(可选, integer) 查询所需的最大自动机状态数。 默认为
10000。Elasticsearch 在内部使用 Apache Lucene 解析正则表达式。 Lucene 将每个正则表达式转换成一个包含许多确定状态的有限自动机。
你可以使用此参数来防止该转换无意中消耗太多资源。 你可能需要增加这个限制来运行复杂的正则表达式。
-
rewrite -
(可选, string) 用于重写查询的方法。有效值及更多信息请参考
rewrite参数。
如果 search.allow_expensive_queries 设置为 false, 则正则查询不会被执行。