PLEASE NOTE:
We are working on updating this book for the latest version. Some content might be out of date.
We are working on updating this book for the latest version. Some content might be out of date.
Exact-Value Fieldsedit
The final topic that we should touch on before leaving multifield queries is
that of exact-value not_analyzed fields.
It is not useful to mix
not_analyzed fields with analyzed fields in multi_match queries.
The reason for this can be demonstrated easily by looking at a query
explanation. Imagine that we have set the title field to be not_analyzed:
GET /_validate/query?explain
{
"query": {
"multi_match": {
"query": "peter smith",
"type": "cross_fields",
"fields": [ "title", "first_name", "last_name" ]
}
}
}Because the title field is not analyzed, it searches that field for a single
term consisting of the whole query string!
title:peter smith
(
blended("peter", fields: [first_name, last_name])
blended("smith", fields: [first_name, last_name])
)That term clearly does not exist in the inverted index of the title field,
and can never be found. Avoid using not_analyzed fields in multi_match
queries.