通配符查询
使用通配符查询来搜索匹配通配符模式的词项。通配符查询支持以下运算符。
运算符 | 描述 |
---|---|
* | 匹配零个或多个字符。 |
? | 匹配任何单个字符。 |
不区分大小写 (case_insensitive) | 如果为 true ,则通配符查询不区分大小写。如果为 false ,则通配符查询区分大小写。默认值为 false (区分大小写)。 |
对于区分大小写的搜索,要查找以 H
开头并以 Y
结尾的词项,请使用以下请求
GET shakespeare/_search
{
"query": {
"wildcard": {
"speaker": {
"value": "H*Y",
"case_insensitive": false
}
}
}
}
如果您将 *
更改为 ?
,则不会得到任何匹配项,因为 ?
指的是单个字符。
通配符查询通常很慢,因为它们需要遍历大量词项。避免在查询开头放置通配符,因为它在资源和时间方面都可能是一个非常昂贵的操作。
通配符字段类型 会构建一个索引,该索引经过专门设计,对通配符和正则表达式查询非常高效。
参数
查询接受字段名称 (<field>
) 作为顶级参数
GET _search
{
"query": {
"wildcard": {
"<field>": {
"value": "patt*rn",
...
}
}
}
}
<field>
接受以下参数。除 value
外,所有参数都是可选的。
参数 | 数据类型 | 描述 |
---|---|---|
值 | 字符串 | 用于匹配 <field> 中指定字段的词项的通配符模式。 |
提升 | 浮点 | 一个浮点值,指定此字段对相关性得分的权重。高于 1.0 的值会增加字段的相关性。介于 0.0 和 1.0 之间的值会降低字段的相关性。默认值为 1.0。 |
不区分大小写 (case_insensitive) | 布尔型 | 如果为 true ,则允许值与索引字段值进行不区分大小写的匹配。默认值为 false (大小写敏感性由字段的映射决定)。 |
重写 (rewrite) | 字符串 | 确定 OpenSearch 如何重写和评分多词项查询。有效值为 constant_score 、scoring_boolean 、constant_score_boolean 、top_terms_N 、top_terms_boost_N 和 top_terms_blended_freqs_N 。默认值为 constant_score 。 |
如果 search.allow_expensive_queries
设置为 false
,则不执行通配符查询。