Span field masking query
editSpan field masking query
editWrapper to allow span queries to participate in composite single-field span queries by lying about their search field. The span field masking query maps to Lucene’s SpanFieldMaskingQuery
This can be used to support queries like span-near or span-or across different fields, which is not ordinarily permitted.
Span field masking query is invaluable in conjunction with multi-fields when same content is indexed with multiple analyzers. For instance we could index a field with the standard analyzer which breaks text up into words, and again with the english analyzer which stems words into their root form.
Example:
response = client.search(
body: {
query: {
span_near: {
clauses: [
{
span_term: {
text: 'quick brown'
}
},
{
span_field_masking: {
query: {
span_term: {
'text.stems' => 'fox'
}
},
field: 'text'
}
}
],
slop: 5,
in_order: false
}
}
}
)
puts response
GET /_search
{
"query": {
"span_near": {
"clauses": [
{
"span_term": {
"text": "quick brown"
}
},
{
"span_field_masking": {
"query": {
"span_term": {
"text.stems": "fox"
}
},
"field": "text"
}
}
],
"slop": 5,
"in_order": false
}
}
}
Note: as span field masking query returns the masked field, scoring will be done using the norms of the field name supplied. This may lead to unexpected scoring behaviour.