Hey,
there's the catch. It does not behave at all like an SQL OR. The above linked docs state
In a boolean query with no must or filter clauses, one or more should clauses must match a document.
As you specified a filter in the bool query, none of the should clauses have to match. The interesting part for you however is the next note about a bool query in a filter context. If you put a new bool query with the filter and should clauses inside of the filter, then the query will behave as you expect.
--Alex