You can use MuliMatchQuery or Boolean Query to fulfill your requirement.
eg: -
BoolQueryBuilder boolQuery = new BoolQueryBuilder();
for (Map.Entry<String, String> entry : fields.entrySet()){
boolQuery.must(QueryBuilders.matchQuery(entry.getKey(), entry.getValue()));
}
Set this boolQueryto searchRequestread boolQueries elasticsearch and use the one that fits your requirements.
AND . field1 field2 . OR, sould, minimum_should_match, , .