I\'m using elasticsearch and am having a devil of a time getting an exact match to happen. I\'ve tried various combinations of match, query_string, etc, and I either get not
Hash two value which you need to search into hash key, then search it.
Fields are analyzed with the standard analyzer by default. If you would like to check exact match, you could store your field not analyzed also e.g:
"dog":{
"type":"multi_field",
"fields":{
"dog":{
"include_in_all":false,
"type":"string",
"index":"not_analyzed",
"store":"no"
},
"_tokenized":{
"include_in_all":false,
"type":"string",
"index":"analyzed",
"store":"no"
}
}
}
Then you can query the dog-field for exact matches, and dog._tokenized for analyzed queries (like fulltext)
I think that your problem is that field term is being analyzed (check your mapping) with the standard analyzer and is filtering stopwords such as the or that. For that reason you get the same score for Dog and The Dog. So maybe you can solve your problem by configuring a custom analyzer => documentation page