1

使用 Elasticsearch 和无痛有没有办法实现指数函数?我似乎找不到任何东西。我有这样的东西。

bdy = {
    "from" : 0,
    "size" : 10,
    "query": {
        "function_score": {
            "query": {
                "bool": {
                    "must": must_terms
                }
            },
            "script_score": {
                "script": {
                "lang": "expression",
                "source": "doc['release_year'].value"
              }
            }
        }
    }
}

我想在源字段中添加一些更复杂的数学,就像这样。

"source": "Math.exponential(1/doc['release_year'].value)"

那可能吗?或者是否有另一种脚本语言可以在弹性搜索中做到这一点?

更新

实际上看起来我可以使用。

"lang": "expression"
"source": "_score/10 + 1/(1+ exp(-(doc['release_year'].value*a)))"

http://lucene.apache.org/core/6_0_0/expressions/index.html?org/apache/lucene/expressions/js/package-summary.html

如果有人有其他选择会很酷。

4

1 回答 1

4

你可以用同样的方式在无痛中做到这一点Math.exp()

"source": "_score/10 + 1/(1+ Math.exp(-(doc['release_year'].value*a)))"

在此处查看完整的 Painless API:https ://www.elastic.co/guide/en/elasticsearch/painless/current/painless-api-reference.html

于 2018-04-27T03:14:21.153 回答