在Elasticsearch中,如何通过排名(第1,第2,第3 ......)字段的值来提高分数?

时间:2017-02-17 20:53:09

标签: elasticsearch relevance

我在文档中有一个排名的字段:值越低,它应该具有的分数越高。成为第一是最好的,但是最后是最糟糕的。所以排名1优于100万。

到目前为止,我已经能够使用score_query and field_value_factor提升字段值本身,但它为文档提供了更高数字的排名更高的提升。

"field_value_factor": {
  "field": "rank",
  "factor": 1.2,
  "modifier": "sqrt",
  "missing": 1
}

我应该使用不同的修饰符吗?或者我是否完全错了?此外,我不想单独对它进行排序,因为我有其他因素影响_score

1 个答案:

答案 0 :(得分:1)

你实际上需要采用一个修饰函数来回传rank值,即1 / rank,这样等级越高,值越低,rank = 1将得分为1.唯一一个得分为reciprocal

"field_value_factor": {
  "field": "rank",
  "factor": 1.2,
  "modifier": "reciprocal",
  "missing": 1
}