Difference between bool-should-match vs terms query on keyword/numeric field

If I have a field in ES which is either keyword or numeric(integer/long), is there any difference between performing a bool-should[match,match,match] query vs a terms query?

Yes, the bool query will use IDF meaning rarer terms match higher. The terms query ignores IDF.