阅读本文需要先了解function_score的相关知识,请看 ElasticSearch - function_score 简介
{ "language": "java", "like": 5 } { "language": "python", "like": 5 } { "language": "go", "like": 10 }
functions是一个数组,裡面放著的是将要被使用的加强函数列表,我们在裡面使用了3个filter去过滤数据,并且每个filter都设置了一个加强函数,并且还使用了一个会应用到所有文档的field_value_factor加强函数
可以为列表裡的每个加强函数都指定一个filter,这样做的话,只有在文档满足此filter的要求,此filter的加强函数才会应用到文挡上,也可以不指定filter,这样的话此加强函数就会应用到全部的文挡上
一个文档可以一次满足多条加强函数和多个filter,如果一次满足多个,那麽就会产生多个加强score
因此ES会先使用score_mode定义的方式来合併这些加强score们,得到一个总加强score,得到总加强score之后,才会再使用boost_mode定义的方式去和old_score做合併
GET 127.0.0.1/mytest/doc/_search { "query": { "function_score": { "query": {