【问题标题】:ElasticSearch Numeric DistanceElasticSearch 数字距离
【发布时间】:2018-07-27 17:12:29
【问题描述】:

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

这个分数将是两个数字之间的数字距离。

有没有办法在弹性搜索中做到这一点?

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

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

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

【问题讨论】:

  • 是的,使用function_score 查询,您能分享一些数据并展示您想要实现的目标吗?
  • 我编辑了我的问题以使其更清楚

标签: elasticsearch distance


【解决方案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
                  }
                }
            }
        }
    }
}

【讨论】:

    【解决方案2】:

    如果我理解正确,你想要这样的东西吗?它在字段range 中搜索并返回score 值介于0 和6 之间的所有匹配项。

    查询 = { '询问': { '范围': { '分数': { 'lte': 6, 'gte':0 } } } }

    【讨论】:

    • 我认为 OP 正在寻求一种方法来计算分数作为产生两个数字之间差异的函数,这可以通过function_score 来实现
    猜你喜欢
    • 2017-04-08
    • 1970-01-01
    • 1970-01-01
    • 2017-07-29
    • 1970-01-01
    • 2012-04-17
    • 2020-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多