基于字段的存在来提升文档

时间:2014-05-09 11:44:33

标签: elasticsearch

是否可以根据字段的存在来提升文档的相关性?我读过关于function score queries的内容,但我想知道如何考虑存在 - 根据我的理解,field_value_factor适用于该字段的内容,而不是其存在。

3 个答案:

答案 0 :(得分:2)

使用function score query exists-filter作为增强滤镜。

答案 1 :(得分:1)

可以使用功能评分查询,但是评分功能在计算上是昂贵的,并且不是必需的(请注意,下面使用的exists查询在2014年可能不可用)。

可以执行以下操作:

POST _search
{
  "query": {
    "bool" : {
      "should" : [
        { 
          match_all: {
            "boost": 10
          } 
        },
        {
         "exists": {
           "field": "some_field_that_should_exist"
          }
        }           
      ],
      "minimum_should_match" : 2,
    }
  }
}

最小应该匹配为2,我们说两个子句都必须匹配才能使should子句匹配。这样可以防止将增强应用于没有该字段的文档。

答案 2 :(得分:0)

这可以简化。存在是一个恒定分数查询,boost可以直接与它一起使用。

{  
   "query":{  
      "exists":{  
         "field":"some_field_that_should_exist",
         "boost":10
      }
   }
}