Groovy 脚本语言

5.0.0中弃用。 Groovy将被新的脚本语言Painless所取代

默认情况下,Groovy 可用于Elasticsearch。 虽然受 Java 安全管理器限制,但它不是沙盒语言,默认情况下只能使用文件脚本。

启用内联或存储的Groovy脚本是一种安全风险,只有当您的Elasticsearch集群受到外部环境的保护时,才应该考虑。 即使一个简单的 while(true){} 循环也可能作为对您的集群的拒绝服务攻击。

有关脚本的安全问题的详细信息,请参阅脚本和安全性,包括如何自定义类白名单。

Doc值属性和方法

Groovy 中的 Doc 值支持以下属性和方法(取决于底层字段类型):

doc['field_name'].value

字段的本机值。例如,如果它是一个短型,它会很短。

doc['field_name'].values

字段的本机数组值。例如,如果它是一个简短的类型,它会很短[]。请记住,一个字段可以在单个文档中具有多个值。如果该字段没有值,则返回一个空数组。

doc['field_name'].empty

一个布尔值,指示该字段在文档中是否没有值。

doc['field_name'].lat

地理位置类型的纬度,或空值。

doc['field_name'].lon

地理点类型的经度,或空值。

doc['field_name'].lats

地理点类型的纬度或空数组。

doc['field_name'].lons

地理点类型的经度,或空数组。

doc['field_name'].arcDistance(lat, lon)

该地理点字段与提供的纬度/距离的弧距(以米为单位)。

doc['field_name'].arcDistanceWithDefault(lat, lon, default)

该地理点字段与提供的lat / lon的弧距(以米为单位),具有空字段的默认值

doc['field_name'].planeDistance(lat, lon)

该地理点字段与提供的纬度/距离的平面距离(以米为单位)。

doc['field_name'].planeDistanceWithDefault(lat, lon, default)

该地理点字段与提供的lat / lon的平面距离(以米为单位),空字段的默认值

doc['field_name'].geohashDistance(geohash)

该地理位置字段与提供的geohash的弧距(以米为单位)。

doc['field_name'].geohashDistanceWithDefault(geohash, default)  

来自提供的 geohash 的该地理点字段的弧距(以米为单位),空字段的默认值

Groovy内置功能

有几个可以在脚本中使用的内置函数。 他们包括:

函数 描述
sin(a) 返回角度的三角正弦。
cos(a) 返回角度的三角余弦。
tan(a) 返回角度的三角正切。
asin(a) 返回一个值的正弦。
acos(a) 返回值的反余弦值。
atan(a) 返回值的反正切值。
toRadians``(angdeg) 将以度为单位的角度转换为以弧度测量的大致相等的角度
toDegrees``(angrad) 将以度为单位的角度转换为以弧度测量的大致相等的角度
exp(a) 返回欧拉的数字e提高到价值的力量。
log(a) 返回欧拉的数字e提高到价值的力量。
log10(a) 返回欧拉的数字e提高到价值的力量。
sqrt(a) 返回欧拉的数字e提高到价值的力量。
cbrt(a) 返回双值的多维数据集根。
IEEEremainder``(f1, f2) 根据IEEE 754标准计算两个参数的余数运算。
ceil(a) 返回大于或等于参数的最小(最接近负的无穷大)值,并且等于数学整数。
floor(a) 返回小于或等于参数的最大(最接近正无穷大)的值,等于一个数学整数。
rint(a) 返回与参数最接近的值,并等于数学整数。
atan2(y, x) 从直角坐标(x,y)到极坐标(r,theta)的转换返回角度θ。
pow(a, b) 将第一个参数的值返回到第二个参数的幂。
round(a) 返回最接近参数的int。
random() 返回一个随机双重值。
abs(a) 返回值的绝对值。
max(a, b) 返回两个值中的较大值。
min(a, b) 返回两个值中的较小值。
ulp(d) 返回参数的ulp的大小。
signum(d) 返回参数的signum函数。
sinh(x) 返回值的双曲正弦。
cosh(x) 返回值的双曲余弦值。
tanh(x) 返回值的双曲正切值。
hypot(x, y) 返回sqrt(x2 + y2),没有中间溢出或下溢。