ElasticSearch数值距离

时间:2018-07-27 08:41:21

标签: elasticsearch distance

我正在寻找一种进行查询以返回分数的方法。

此分数将是2个数字之间的数字距离。

elasticsearch中有没有办法做到这一点?

例如,如果我的数据如下所示: { value: INT }

在我的查询中,我想要一个默认参数(另一个INT)

因此,我希望我的数据按照分数(| object.value-default.value |)

排序

2 个答案:

答案 0 :(得分:1)

使用function_score query(与script_score一起使用),您可以实现所需的功能:

GET /_search
{
    "query": {
        "function_score": {
            "query": {
                "match_all": { }
            },
            "script_score" : {
                "script" : {
                  "source": "Math.abs(doc['value'].value - params.default)",
                  "params": {
                    "default": 10
                  }
                }
            }
        }
    }
}

答案 1 :(得分:0)

如果我理解正确,您想要这样的东西吗?它会在字段range中进行搜索,并返回所有score值在0到6之间的匹配。

  

query = {             '查询':{                 '范围': {                     '得分了': {                     'lte':6                     'gte':0                     }                 }             }