Span multi-term query
editSpan multi-term query
editThe span_multi
query allows you to wrap a multi term query
(one of wildcard,
fuzzy, prefix, range or regexp query) as a span query
, so
it can be nested. Example:
resp = client.search( query={ "span_multi": { "match": { "prefix": { "user.id": { "value": "ki" } } } } }, ) print(resp)
response = client.search( body: { query: { span_multi: { match: { prefix: { 'user.id' => { value: 'ki' } } } } } } ) puts response
const response = await client.search({ query: { span_multi: { match: { prefix: { "user.id": { value: "ki", }, }, }, }, }, }); console.log(response);
GET /_search { "query": { "span_multi": { "match": { "prefix": { "user.id": { "value": "ki" } } } } } }
A boost can also be associated with the query:
resp = client.search( query={ "span_multi": { "match": { "prefix": { "user.id": { "value": "ki", "boost": 1.08 } } } } }, ) print(resp)
response = client.search( body: { query: { span_multi: { match: { prefix: { 'user.id' => { value: 'ki', boost: 1.08 } } } } } } ) puts response
const response = await client.search({ query: { span_multi: { match: { prefix: { "user.id": { value: "ki", boost: 1.08, }, }, }, }, }, }); console.log(response);
GET /_search { "query": { "span_multi": { "match": { "prefix": { "user.id": { "value": "ki", "boost": 1.08 } } } } } }
span_multi
queries will hit too many clauses failure if the number of terms that match the query exceeds the
indices.query.bool.max_clause_count
search setting.
To avoid an unbounded expansion you can set the rewrite method of the multi term query to top_terms_*
rewrite. Or, if you use span_multi
on prefix
query only,
you can activate the index_prefixes
field option of the text
field instead. This will
rewrite any prefix query on the field to a single term query that matches the indexed prefix.