5.0.0中弃用。 Groovy将被新的脚本语言Painless所取代
默认情况下,Groovy 可用于Elasticsearch。 虽然受 Java 安全管理器限制,但它不是沙盒语言,默认情况下只能使用文件脚本。
启用内联或存储的Groovy脚本是一种安全风险,只有当您的Elasticsearch集群受到外部环境的保护时,才应该考虑。 即使一个简单的 while(true){} 循环也可能作为对您的集群的拒绝服务攻击。
有关脚本的安全问题的详细信息,请参阅脚本和安全性,包括如何自定义类白名单。
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 的该地理点字段的弧距(以米为单位),空字段的默认值
有几个可以在脚本中使用的内置函数。 他们包括:
函数 | 描述 |
---|---|
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),没有中间溢出或下溢。 |