You're viewing version 2.19 of the OpenSearch documentation. For the latest version, see the current documentation. For information about OpenSearch version maintenance, see Release Schedule and Maintenance Policy.
Span multi-term query
The span_multi query allows you to wrap a multi-term query (like wildcard, fuzzy, prefix, range, or regexp) as a span query. This enables you to use these more flexible matching queries within other span queries.
For example, you can use the span_multi query to:
- Find words with common prefixes near other terms.
- Match fuzzy variations of words within spans.
- Use regular expressions in span queries.
span_multiqueries can potentially match many terms. To avoid excessive memory usage, you can:
- Set the
rewriteparameter for the multi-term query.- Use the
top_terms_*rewrite method.- Consider enabling the
index_prefixesoption for the text field if you usespan_multionly for aprefixquery. This automatically rewrites anyprefixquery on the field into a single-term query that matches the indexed prefix.
Example
To try the examples in this section, complete the setup steps.
The span_multi query uses the following syntax to wrap the prefix query:
"span_multi": {
  "match": {
    "prefix": {
      "description": {
        "value": "flutter"
      }
    }
  }
}
The following query searches for words starting with “dress” near any form of “sleeve” within at most 5 words of each other:
GET /clothing/_search
{
  "query": {
    "span_near": {
      "clauses": [
        {
          "span_multi": {
            "match": {
              "prefix": {
                "description": {
                  "value": "dress"
                }
              }
            }
          }
        },
        {
          "field_masking_span": {
            "query": {
              "span_term": {
                "description.stemmed": "sleev"
              }
            },
            "field": "description"
          }
        }
      ],
      "slop": 5,
      "in_order": false
    }
  }
}
The query matches documents 1 (“Long-sleeved dress…”) and 4 (“…dresses with long fluttered sleeves…”) because “dress” and “long” occur within the maximum distance in both documents.
Response
{
  "took": 5,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 2,
      "relation": "eq"
    },
    "max_score": 1.7590723,
    "hits": [
      {
        "_index": "clothing",
        "_id": "1",
        "_score": 1.7590723,
        "_source": {
          "description": "Long-sleeved dress shirt with a formal collar and button cuffs. "
        }
      },
      {
        "_index": "clothing",
        "_id": "4",
        "_score": 0.84792376,
        "_source": {
          "description": "A set of two midi silk shirt dresses with long fluttered sleeves in black. "
        }
      }
    ]
  }
}
Parameters
The following table lists all top-level parameters supported by span_multi queries. All parameters are required.
| Parameter | Data type | Description | 
|---|---|---|
| match | Object | The multi-term query to wrap (can be prefix,wildcard,fuzzy,range, orregexp). |