For functions/operators than cannot operate on text fields move the validation that's currently happening in places like QueryTranslator to resolveType().
Also avoid throwing an Exception from exactAttribute()->TextEsField.getExactField() method call, but instead introduce new method that has a proper return type that can be used for the validation.