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

OpenSearch script - accessing global variables inside a function

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

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

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

有人可以指点我准确解释全局变量可用的位置和时间的文档吗?有没有什么方法可以在函数内部访问 doc ,比如添加命名空间前缀之类的? (显然,我可以将它作为函数参数传入,但我只是想看看是否真的有必要。)

Opensearch 脚本也基于 Painless

Painless 函数没有很好的文档记录,但它们被设计为 completely independent 脚本主体,因此函数应该处理的任何内容都必须作为参数传递。

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

int price = getPrice(doc);