Wildcard查询
介绍
返回包含与通配符模式匹配的文档。
例子
以下搜索返回 user.id 字段包含以 ki 开头并以 y 结尾的文档。这些匹配项可以包括 kiy、kity 或 kimchy
GET /_search
{
"query": {
"wildcard": {
"user.id": {
"value": "ki*y",
"boost": 1.0,
"rewrite": "constant_score"
}
}
}
}
wildcard的顶级参数
(必填, 对象) 你想查询的字段field的二级参数
参数名 | 描述 |
---|---|
boost | (Optional, float) 用于降低或提高查询相关性得分的浮点数。默认为1.0。 |
rewrite | (可选,字符串)用于重写查询的方法。有关有效值和更多信息,请参阅 rewrite 参数。 |
case_insensitive [从7.10.0版本添加] | (可选,布尔值)当设置为 true 时,允许将值与索引字段值进行不区分大小写的匹配。默认为 false,这意味着匹配的区分大小写取决于基础字段的映射。 |
value | (必需,字符串)您希望在提供的 中找到的术语的通配符模式。 此参数支持两个通配符运算符:?,匹配任何单个字符;*,可以匹配零个或多个字符,包括一个空字符 |
wildcard | (必需,字符串)value 参数的别名。如果您同时指定值和通配符,则查询将使用请求正文中的最后一个。 |
Regexp查询
介绍
返回包含与正则表达式匹配的术语的文档。
例子
以下搜索返回 user.id 字段包含任何以 k 开头并以 y 结尾的术语的文档。 .* 运算符匹配任何长度的任何字符,包括空字符。匹配项可以包括 ky、kay 和 kimchy。
GET /_search
{
"query": {
"regexp": {
"user.id": {
"value": "k.*y",
"flags": "ALL",
"case_insensitive": true,
"max_determinized_states": 10000,
"rewrite": "constant_score"
}
}
}
}
regexp的顶级参数
(必填, 对象) 你想查询的字段field的二级参数
参数名 | 描述 |
---|---|
rewrite | (可选,字符串)用于重写查询的方法。有关有效值和更多信息,请参阅 rewrite 参数。 |
case_insensitive [从7.10.0版本添加] | (可选,布尔值)当设置为 true 时,允许将值与索引字段值进行不区分大小写的匹配。默认为 false,这意味着匹配的区分大小写取决于基础字段的映射。 |
value | (必需,字符串)您希望在提供的 中找到的术语的正则表达式。有关支持的运算符列表,请参阅正则表达式语法。 |
flags | 为正则表达式启用可选运算符。ALL (Default) 允许所有可选运算符。其他可选运算符见 Regular expression syntax |
max_determinized_states | (可选,整数)查询所需的最大自动机状态数。默认值为 10000。Elasticsearch 在内部使用 Apache Lucene 来解析正则表达式。 Lucene 将每个正则表达式转换为包含许多确定状态的有限状态机。您可以使用此参数来防止该转换无意中消耗过多资源。您可能需要增加此限制以运行复杂的正则表达式。 |
regexp的限制
如果 search.allow_expensive_queries 设置为 false,则不会执行regexp查询。