脚本
脚本模块使你可以使用脚本来评估自定义表达式,例如,你可以使用脚本将“脚本字段”作为搜索请求的一部分返回,或者为查询评估自定义分数。
默认脚本语言是Painless
,附加的lang
插件使你可以运行用其他语言编写的脚本,在可以使用脚本的任何地方,都可以包含一个lang
参数来指定脚本的语言。
通用语言:
这些语言在脚本API中可用于任何用途,并提供最大的灵活性。
语言 | 沙盒 | 必需的插件 |
---|---|---|
painless |
yes | 内建的 |
专用语言:
这些语言不太灵活,但通常对某些任务具有更高的性能。
语言 | 沙盒 | 必需的插件 | 用途 |
---|---|---|---|
expression |
yes | 内建的 | 快速自定义排名和排序 |
mustache |
yes | 内建的 | 模板 |
java |
n/a | 你编写它! | 专家API |
脚本和安全性
沙盒语言在设计时考虑了安全性,但是,非沙盒语言可能是一个安全问题,请阅读脚本和安全性以获取更多详细信息。
Painless脚本语言
painless
是一种简单,安全的脚本语言,专为与Elasticsearch一起使用而设计,它是Elasticsearch的默认脚本语言,可以安全地用于内联和存储脚本,有关painless
语法和语言功能的详细说明,请参阅Painless语言规范。
你可以在Elasticsearch中使用脚本的任何地方使用Painless脚本,Painless提供:
- 性能快:Painless脚本运行速度比备选方案快几倍。
- 安全:具有方法调用/字段粒度的细粒度白名单,有关可用类和方法的完整列表,请参阅Painless API参考。
- 可选输入:变量和参数可以使用显式类型或动态
def
类型。 - 语法:扩展Java的语法,以提供Groovy样式的脚本语言功能,使脚本更易于编写。
- 优化:专为Elasticsearch脚本编写而设计。
准备开始使用Painless编写脚本了吗?请参阅Painless脚本语言指南中的Painless入门。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。