Link Search Menu Expand Document Documentation Menu

通配符查询

使用通配符查询来搜索匹配通配符模式的词项。通配符查询支持以下运算符。

运算符 描述
* 匹配零个或多个字符。
? 匹配任何单个字符。
不区分大小写 (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_scorescoring_booleanconstant_score_booleantop_terms_Ntop_terms_boost_Ntop_terms_blended_freqs_N。默认值为 constant_score

如果 search.allow_expensive_queries 设置为 false,则不执行通配符查询。

剩余 350 字符

有问题?

想做贡献?