did you manage to solve this problem?
I wrote a small module addresses your issue - if you search for a string that matches the SKU of a product, then you get redirected to the product details page of that product. I did it this way so that no query gets to the search engine since you would get only one result when searching for an SKU. You can check the code on my github repo.
And in order to shed some light into why is Elasticsearch 'working this way' (you get a bunch of results even if you searched for one item), it's like that because you are not limiting the search engine to show only exact matches. In a generic e-commerce scenario you normally don't want that; you want at least some results to be shown, the most relevant to the searched query, even if no exact match was found.
Your search query will provide a set of results that are sorted by relevance, from the most relevant to the least relevant, measured as a score between 0 and 1 (closest to 1 means higher the match). The relevance is influenced by many factors and if you are interested on the topic I recommend reading about how scoring works in Elasticsearch.