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.