Sorting by Fields After Text Score


I was wondering if elastic has the ability to sort by certain indexed fields in a document but not prioritize them over the textual match...

For instance, lets say i have an index of products that has the following items:

{"_id": 1, "title" : "black headphones XM4", "product_rating": 91, "maker": "Sony", "maker_rating": 93}
{"_id": 2, "title" : "black headphones XM5", "product_rating": 89, "maker": "Sony", "maker_rating": 93}
{"_id": 3, "title" : "black headphones", "product_rating": 32, "maker": "AliBaba", "maker_rating": 34}
{"_id": 4, "title" : "white headphones", "product_rating": 91, "maker": "Sony", "maker_rating": 93}

and a user searches for "black headphones"

I would like to get the most textually matching results sure. But I also want to make sure to display them according to the highest maker rating and then the highest product ratings. So in my perfect world i would like elastic to return _ids 1,2,3,4 in that order.

Is there any way to write an elastic query that can accomplish this behavior ?

Thank you in advance

Hi @AymanHamdoun

Did you use sort with the two mentioned fields?
I think it shouldn't work perfectly in the order you want. In your case I would try to use the field value factor to get the results in the desired order using the rating fields along with the score.