opensearch-docs-cn/_query-dsl/term/wildcard.md

2.2 KiB

layout title parent grand_parent nav_order
default Wildcard Term-level queries Query DSL 100

Wildcard query

Use wildcard queries to search for terms that match a wildcard pattern. Wildcard queries support the following operators.

Operator Description
* Matches zero or more characters.
? Matches any single character.

To search for terms that start with H and end with Y, use the following request:

GET shakespeare/_search
{
  "query": {
    "wildcard": {
      "speaker": {
        "value": "H*Y"
      }
    }
  }
}

{% include copy-curl.html %}

If you change * to ?, you get no matches because ? refers to a single character.

Wildcard queries tend to be slow because they need to iterate over a lot of terms. Avoid placing wildcard characters at the beginning of a query because it could be a very expensive operation in terms of both resources and time.

Parameters

The query accepts the name of the field (<field>) as a top-level parameter:

GET _search
{
  "query": {
    "wildcard": {
      "<field>": {
        "value": "patt*rn",
        ... 
      }
    }
  }
}

{% include copy-curl.html %}

The <field> accepts the following parameters. All parameters except value are optional.

Parameter Data type Description
value String The wildcard pattern used for matching terms in the field specified in <field>.
boost Floating-point Boosts the query by the given multiplier. Useful for searches that contain more than one query. Values in the [0, 1) range decrease relevance, and values greater than 1 increase relevance. Default is 1.
case_insensitive Boolean If true, allows case-insensitive matching of the value with the indexed field values. Default is false (case sensitivity is determined by the field's mapping).
rewrite String Determines how OpenSearch rewrites and scores multi-term queries. Valid values are constant_score, scoring_boolean, constant_score_boolean, top_terms_N, top_terms_boost_N, and top_terms_blended_freqs_N. Default is constant_score.

If search.allow_expensive_queries is set to false, wildcard queries are not run. {: .important}