This is what I use (extracted from a lot of different questions/answers):
nnoremap <silent> <Esc><Esc> :let @/=""<CR>
With "double" Esc you remove the highlighting, but as soon as you search again, the highlighting reappears.
Another alternative:
nnoremap <silent> <Esc><Esc> :noh<CR> :call clearmatches()<CR>
According to vim documentation:
clearmatches()
Clears all matches previously defined by |matchadd()| and the |:match| commands.