我们如何在Elasticsearch中手动操作得分字段

时间:2016-09-22 17:12:44

标签: elasticsearch elasticsearch-plugin spring-data-elasticsearch

我正在研究当前情况,如果有特定的文本搜索,则需要增加少量文档。 场景是,我有一组文档,我必须根据特定的关键字进行术语查询,但这里的问题是。让我们说我们搜索一个关键字测试,它将获取100条记录,但要求说很少有文档应该始终作为最佳结果,无论是否有权重和其他标准。我们如何才能实现这一目标是Elasticsearch,任何建议和想法都是最受欢迎的。

1 个答案:

答案 0 :(得分:1)

您可以控制与脚本的相关性。看一眼: https://www.elastic.co/guide/en/elasticsearch/guide/current/script-score.html

这是使用Groovy的一个例子:

price  = doc['price'].value 
margin = doc['margin'].value 

if (price < threshold) { 
  return price * margin / target
}
return price * (1 - discount) * margin / target 

因此,在伪代码中,它将类似于:

if (word == 'test') { 
  return score * n
}
return score