You must index your field in two different ways using multi_field . If you do this the way you already do, you have a match based on the tokens created by the tokenizer. For the second type of match you want, you need to either disable field analysis and index it as is, or use Keyken tokenizer , which produce the same result. Your mapping will look like this:
{ "your_type" : { "properties" : { "brand" : { "type" : "multi_field", "fields" : { "brand" : {"type" : "string", "index" : "analyzed"}, "untouched" : {"type" : "string", "index" : "not_analyzed"} } } } } }
Then you can search in both fields. When you search on brand , you get matches that you already have, when you search on brand.untouched you will get a second number of matches. There are several ways to collect multiple queries, you can see an example in bool query .
source share