在文档http://www.elastic.co/guide/en/elasticsearch/guide/current/boosting-by-popularity.html#CO112-4中,解释了如何根据数字字段提升文档。但是如果任何文档都没有字段,则field_value_factor
不起作用。当某个领域有时缺席时,最好的方法是什么?
答案 0 :(得分:1)
这样做的方法是
{
"query":{
"function_score":{
"functions":[
{
"filter":{
"exists":{
"field":"views"
}
},
"field_value_factor":{
"field":"views",
"factor":1.2,
"modifier":"log1p"
}
},
{
"FUNCTION":{}
}
]
}
}
}
即。应用一系列函数 - 过滤器对。第一个函数检查字段是否存在(在我的情况下为views
),第二个函数检查缺少过滤器(相当于match_all
)和空函数 - 即分数未经修改。