I've noticed that siteId is indexed with every document. But does Find allways filter hits on siteId, or is that something we have to do manually?
What I'm really asking is if we can use the same index to multiples sites and version, e.g. staging, dev and so on?
It doesn't. The SiteId was at least initially indexed to handle multi site/enterprise scenarios rather than different environments. I have heard of some using the same index for dev, staging etc by filtering on SiteId though, but you'd have to do it manually. Personally I'd go for different developer indexes for each non-production environment. Alternatively, if developer indexes causes problems in for instance staging I'd check with EPiServer. Maybe something can be arranged.
Is there a way to allways add a filter to the request, just like SearchClient.Instance.Conventions.UnifiedSearchRegistry.ForInstanceOf<PageData>().AlwaysApplyFilter()? And for files too?
In our case there is a multi site scenario. And maybe enable search over multiple websites.
I take it you mean to add it to non-unified search requests? In that case no, but you could create custom GetResult/GetContentResult/GetPagesResult/GetFilesResult methods that adds such a filter and use those everywhere. There are other options as well, you could plugin various customized classes but custom method(s) is probably the simplest.