脚本

脚本模块使你可以使用脚本来评估自定义表达式,例如,你可以使用脚本将“脚本字段”作为搜索请求的一部分返回,或者为查询评估自定义分数。

默认脚本语言是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入门


下一篇:如何使用脚本

博弈
2.5k 声望1.5k 粉丝

态度决定一切