原英文版地址: 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
, 则正则查询不会被执行。