Elasticsearch衰减参数

时间:2015-07-01 09:42:33

标签: elasticsearch scoring

我有三组文档(例如来自已注册,已验证和未注册用户的文档),我想使用衰减功能对其进行评分。

但是,我需要为这三组文档中的每一组提供不同的衰减速度(比例),以便来自经过验证的用户的文档比未注册用户的文档更长。

看来,不可能将doc字段用作衰减函数的参数。也许,还有其他方法可以实现我想要的目标吗?

1 个答案:

答案 0 :(得分:1)

可以使用函数定义的 function_score ,“filter”来完成:

{
  "size": 100,
  "query": {
    "function_score": {
      "score_mode": "multiply",
      "query": {
        "bool": {
          "must": [
            {
              "term": {
                "status": 0
              }
            },
            {
              "term": {
                "categories": 29
              }
            }
          ]
        }
      },
      "functions": [
        {
          "filter": {
            "term": {
              "user_type": 1
            }
          },
          "weight": 1,
          "gauss": {
            "date_created": {
              "scale": "7d",
              "decay": 0.9
            }
          }
        },
        {
          "filter": {
            "not": {
              "term": {
                "user_type": 1
              }
            }
          },
          "weight": 0.8,
          "gauss": {
            "date_created": {
              "scale": "7d",
              "decay": 0.8
            }
          }
        }
      ]
    }
  }
}