You're viewing version 3.0 of the OpenSearch documentation. This version is no longer maintained. 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, or regexp). |