Hey,
the main question is, what do you expect, when you configure the should query? It seems you expect that all conditions have to match, however this is what the must query is for. The shouldquery contributes to score. You may want to check out the documentation for the bool query https://www.elastic.co/guide/en/elasticsearch/reference/5.2/query-dsl-bool-query.html - which states, that if you have a filterclause, all parts of a should query become optional.
--Alex