Many thanks to @Paulo, his response confirming the function score functionality working as it should, encouraged me to thoroughly examine everything in my query, and I found that one of the chars in the field_value_factor field name was not ascii, hence elasticserach was not finding that field and applying the "field missing" default.