I seem to be getting around 5 re-occuring search terms on my website but who ever is doing it is searching it around 1,000 times and the results show nothing. I am worried this is some sort of search attack, how can I prevent this?
Yes, likely a bot or script either scraping content or probing for vulnerabilities (or just being a nuisance). Take a look at your raw web access log, grep for the terms, collect the IPs, and block in either .htacces or at the firewall level.
Your web host should be able to help with this, as it's standard stuff for any Magento based host.
I agree with @robfico that you can try looking into your logs (Awstats, Webalizer, Raw Access Log, etc) to identify IP addresses that are causing the problems (rogue bots usually attack from a few IPs only) and block them out from your website.
Depending on your hosting control panel, you can either block them out with an IP Deny Manager or you may need to go the manual way by adding the following to your .htaccess file:-
Order Deny,Allow Deny from 188.8.131.52 Deny from 184.108.40.206 Deny from 220.127.116.11
You can also see if the bots are using a specific "User Agent String" that you can block using a similar method to what @JLHC.
This website goes into a bit more detail about blocking based on the UA:
If you want to download a copy of your RAW access log from your hosting and put it on say dropbox as a zip file I'd be happy to take a quick look for you also and suggest some possible filtering.
He's referring to if you have a Full Page Cache Solution like Lesti or another extension. You can set the cache to cache search results, so the hits will have much less impact on your site's performance.
Magento's built-in cache will not cache search results.