当场地可能缺失时,弹性搜索受到欢迎

时间:2015-03-19 20:56:31

标签: elasticsearch

在文档http://www.elastic.co/guide/en/elasticsearch/guide/current/boosting-by-popularity.html#CO112-4中,解释了如何根据数字字段提升文档。但是如果任何文档都没有字段,则field_value_factor不起作用。当某个领域有时缺席时,最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

这样做的方法是

{
   "query":{
      "function_score":{
         "functions":[
            {
               "filter":{
                  "exists":{
                     "field":"views"
                  }
               },
               "field_value_factor":{
                  "field":"views",
                  "factor":1.2,
                  "modifier":"log1p"
               }
            },
            {
               "FUNCTION":{}
            }
         ]
      }
   }
}  

即。应用一系列函数 - 过滤器对。第一个函数检查字段是否存在(在我的情况下为views),第二个函数检查缺少过滤器(相当于match_all)和空函数 - 即分数未经修改。