原英文版地址: https://www.elastic.co/guide/en/elasticsearch/reference/7.7/query-dsl-wildcard-query.html, 原文档版权归 www.elastic.co 所有
本地英文版地址: ../en/query-dsl-wildcard-query.html

通配符查询(wildcard query)

返回包含匹配通配符模式的词项的文档。

通配符运算符是匹配一个或多个字符的占位符。 例如,*通配符运算符匹配零个或多个字符。 可以将通配符运算符与其他字符组合起来创建通配符模式。

请求示例

下面这个搜索返回user字段包含以 ki 开头并以 y 结尾的词的文档。 这些匹配的词项可以包括kiykitykimchy

GET /_search
{
    "query": {
        "wildcard": {
            "user": {
                "value": "ki*y",
                "boost": 1.0,
                "rewrite": "constant_score"
            }
        }
    }
}

wildcard的顶级参数

<field>
(必需, object) 你想要搜索的字段。

<field>的参数

value

(必需, string) 你想在指定的 <field>中查找的词项的通配符模式。

此参数支持两个通配符运算符:

  • ?,它匹配任何单个字符
  • *,,可以匹配零个或多个字符,包括一个空字符

避免模式以 *?开头。 这可能会增加查找匹配项所需的迭代次数,并降低搜索性能。

boost

(可选, float) 用于降低或增加查询的相关性评分的浮点数。默认为 1.0

你可以使用 boost 参数来调整包含两个或更多查询的搜索的相关性评分。

boost 值是相对于默认值 1.0 的。 其值在 01.0 之间时会降低相关性评分,而大于 1.0 时会增加相关性评分。

rewrite
(可选, string) 用于重写查询的方法。有效值及更多信息请参考 rewrite 参数

注意

允许昂贵的查询

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