提问者:小点点

OpenSearch 脚本 - 访问函数内的全局变量


我正在为OpenSearch(ElasticSearch的分支)编写一些排序脚本。脚本环境定义了一些全局常量,如doc,这些常量在脚本的顶层可用,但显然不在函数定义中。

def getPrice() {
    return doc["price"];  // compile error: cannot resolve symbol [doc]
}

int price = doc["price"]; // this works

有人可以指出我准确解释全局变量在何时何地可用的文档吗?有没有办法在函数中访问 doc,比如添加命名空间前缀或其他东西?(显然,我可以将其作为函数参数传入,但我只是想看看这是否真的有必要。


共1个答案

匿名用户

Opensearch脚本也基于无痛。

无痛函数没有很好的文档记录,但是它们被设计成完全独立于脚本体,所以函数应该处理的任何东西都必须作为参数传递。

def getPrice(Map document) {
    return document["price"];    
}

int price = getPrice(doc);