一尘不染

Elasticsearch得分基于数字离查询的接近程度

elasticsearch

我想根据数字与查询的接近程度对文档进行评分。由于我有两个文件document1.field = 1document2.field = 10,查询
field = 3然后我想document1._score > document2._score。换句话说,我想要类似针对数字的模糊查询。我将如何实现?用例是我想支持价格查询(精确或范围),但想对不在边界内的商品进行排名。


阅读 375

收藏
2020-06-22

共1个答案

一尘不染

可以使用custom_score查询来实现,其中脚本将根据确切价格与所需价格之间的差的绝对值确定提升。期望的价格应作为参数传递给脚本,以避免针对每个请求重新编译脚本。

另外,也可以使用custom_filters_score查询来实现。此处的过滤器将围绕所需价格包含不同的范围。较小的范围将具有较高的提升,并且在列表中将显示较大的范围。

2020-06-22