painless是一种为安全和性能而设计的脚本语言。
语法与Java语法类似,可用于所有可以使用script的场景下。
painless提供:
快速性能:脚本的运行速度比其他脚本快几倍。
安全性:具有方法调用/字段粒度的细粒度白名单。
可选类型:变量和参数可以使用显式类型或动态定义类型。
语法:扩展Java的语法以提供Groovy风格的脚本语言特性,使脚本更易于编写。
优化:专门为ElasticSearch脚本设计。
注意: 尽量避免使用script,万不得已需要使用的话,选择painless & experssions 引擎。一旦使用script查询,一定要注意控制返回,千万不要有死循环(如下错误的例子),因为ES没有脚本运行的超时控制,只要当前的脚本没执行完,该查询会一直阻塞。