通配符查询

编辑

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

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

示例请求

编辑

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

resp = client.search(
    query={
        "wildcard": {
            "user.id": {
                "value": "ki*y",
                "boost": 1,
                "rewrite": "constant_score_blended"
            }
        }
    },
)
print(resp)
response = client.search(
  body: {
    query: {
      wildcard: {
        'user.id' => {
          value: 'ki*y',
          boost: 1,
          rewrite: 'constant_score_blended'
        }
      }
    }
  }
)
puts response
const response = await client.search({
  query: {
    wildcard: {
      "user.id": {
        value: "ki*y",
        boost: 1,
        rewrite: "constant_score_blended",
      },
    },
  },
});
console.log(response);
GET /_search
{
  "query": {
    "wildcard": {
      "user.id": {
        "value": "ki*y",
        "boost": 1.0,
        "rewrite": "constant_score_blended"
      }
    }
  }
}

wildcard 的顶层参数

编辑
<field>
(必需,对象)您要搜索的字段。

<field> 的参数

编辑
boost

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

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

Boost 值相对于默认值 1.0。介于 01.0 之间的 boost 值会降低相关性评分。大于 1.0 的值会增加相关性评分。

case_insensitive [7.10.0] 在 7.10.0 中添加。
(可选,布尔值)设置为 true 时,允许模式与索引字段值进行不区分大小写的匹配。默认为 false,这意味着匹配的大小写敏感性取决于底层字段的映射。
rewrite
(可选,字符串)用于重写查询的方法。有关有效值和更多信息,请参阅rewrite 参数
value

(必需,字符串)您希望在提供的 <field> 中查找的词项的通配符模式。

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

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

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

wildcard
(必需,字符串)value 参数的别名。如果您同时指定 valuewildcard,则查询将使用请求正文中的最后一个。

说明

编辑

允许昂贵的查询

编辑

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