根据elasticsearch中缺少的字段对文档进行评分

时间:2015-06-29 04:24:43

标签: elasticsearch

我有两个领域的排名和出勤率。如果缺少排名字段,请先显示这些文档,如果缺少考勤,请在另一个之前显示。因此,顺序将是,第一个出勤率和排名都缺失。第二组,其中任何一个缺失。 我怎么能用脚本做到这一点?

1 个答案:

答案 0 :(得分:0)

此查询应该这样做:

{
  "query": {
    "bool": {
      "should": [
        {
          "filtered": {
            "filter": {"missing": {
              "field": "rank"
            }}
          }
        },
        {
          "filtered": {
            "filter": {"missing": {
              "field": "attendance"
            }}
          }
        },
        {
          "match_all": {}
        }
      ]
    }
  }
}

基本思想是布尔查询的should条件将每个都添加到文档的分数。如果缺少一个字段,则会添加一个额外的分数,如果缺少另一个字段,则分数会增加。如果它们都不匹配,那么只考虑match_all查询进行评分。

订单是默认订单:得分后,升序。错过的字段越多,得分越高。