使用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)"
这可能吗?或者是否有另一种脚本语言可以在elasticsearch内完成?
更新
实际上看起来我可以使用。
"lang": "expression"
"source": "_score/10 + 1/(1+ exp(-(doc['release_year'].value*a)))"
如果有人有其他选择会很酷。
答案 0 :(得分:2)
您可以使用与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