昨天的文章中有提到一個叫做腳本語言的東西,之後的文章可能也會常用到,所以今天就來介紹一下吧
介紹一些簡單的使用方法
doc['field_name'].value
or
doc.field_name.value
doc['field_name'].empty
doc['field_name'].length
doc['field_name'].min() 最小
doc['field_name'].max() 最大
doc['field_name'].median() 中間值
doc['field_name'].avg() 平均值
doc['field_name'].sum() 總和
講完如何拿字段值,接下來就是如何運算
加減乘除就不多做贅述,就是一般的用法(ex:2 + 3)
"mod":{
"script":{
"lang": "expression",
"source": "100 % 3"
}
}
結果:
"mod" : [1.0]
"pow":{
"script":{
"lang": "expression",
"source": "pow(3,3)"
}
}
結果:
"pow" : [27.0]
"sqrt":{
"script":{
"lang": "expression",
"source": "sqrt(100)"
}
}
結果:
"sqrt" : [10.0]
"ln":{
"script":{
"lang": "expression",
"source": "ln(10)+ln(8)"
}
}
結果:
"ln" : [4.382026634673881]
painless是ES預設的腳本語言,有以下特性
1.性能快
2.擴展了java的基本語法
3.使用白名單來限制函數和字段的訪問
4.專為ES所設計,所以安全性很好,也很輕量
painless拿值的方式跟上面提到的大同小異,所以這邊就不多做贅述
painless的基本運算
"pow":{
"script":{
"lang": "painless",
"source": "Math.pow(3,3)"
}
}
"sqrt":{
"script":{
"lang": "painless",
"source": "Math.sqrt(100)"
}
}
"log":{
"script":{
"lang": "painless",
"source": "Math.log(10) + Math.log(8)"
}
}
也可以把它當成java來寫
"test": {
"script": {
"lang": "painless",
"source": "int a=1; int c=0; if(a>0){c=1;} return c"
}
}
#記得要return數值
結果:
"test" : [1]
內容不要太在意,這邊只是告訴大家可以這樣使用
今天的文章就到這邊告一段落