Elasticsearch 脚本化查询无痛指数函数

Elasticsearch scripted query painless exponential function

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

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)"

这可能吗?或者是否有其他脚本语言可以在 elasticsearch 中执行此操作?

更新

其实看起来我可以用。

"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

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

您可以在 Painless 中以与 Math.exp()

相同的方式进行操作
"source": "_score/10 + 1/(1+ Math.exp(-(doc['release_year'].value*a)))"

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