ElasticSearch使用脚步做数学运算 加减乘除
ElasticSearch版本:7.X
ElasticSearch的脚本提供了加、减、乘、除、取模、乘方、开方、对数等运算
1、加、减、乘、除、取模、乘方、开方、对数等运算
2、脚本简单语法
3、对索引中的字段运算
1、加、减、乘、除、取模、乘方、开方、对数等运算
1.1 expression脚本
GET metric/_search //metric自己的索引名
{
"size": 1, //这里只是看一下运算结果,所以看一条就够了,自己用的时候根据自己的实际情况
"script_fields": {
//1、计算相加
"sum": { //sum自己定义的字段名,用于存放计算结果
"script": {
"lang": "expression", //脚本语言,它默认painless,这里用的是expression
"source": "2 + 3" //脚本内容
}
},
//2、计算相减
"sub":{ //sub自己定义的字段名,用于存放计算结果
"script":{
"lang": "expression",
"source": "10 - 2"
}
},
//3、计算相乘
"mul":{ //自己定义的字段名,用于存放计算结果
"script":{
"lang": "expression",
"source": "3 * 8"
}
},
//计算相除
"div":{ //自己定义的字段名,用于存放计算结果
"script":{
"lang": "expression",
"source": "100 / 3"
}
},
//取模运算
"mod":{ //自己定义的字段名,用于存放计算结果
"script":{
"lang": "expression",
"source": "100 % 3"
}
},
//乘方运算
"pow":{ //自己定义的字段名,用于存放计算结果
"script":{
"lang": "expression",
"source": "pow(3,3)"
}
},
//开方运算
"pow/1":{ //自己定义的字段名,用于存放计算结果
"script":{
"lang": "expression",
"source": "pow(27,1/3)"
}
},
//开平方,根号运算
"sqrt" //自己定义的字段名,用于存放计算结果
"script":{
"lang": "expression",
"source": "sqrt(100)"
}
},
"ln":{ //自己定义的字段名,用于存放计算结果
"script":{
"lang": "expression",
"source": "ln(2)+ln(5)"
}
}
}
}
执行结果:
其他内容省略
"fields" : {
"div" : [
33.333333333333336
],
"sub" : [
8
],
"ln" : [
2.3025850929940455
],
"mod" : [
1.0
],
"pow/1" : [
3.0
],
"mul" : [
24.0
],
"sqrt" : [
10.0
],
"pow" : [
27.0
],
"sum" : [
5.0
]
}
}
]
}
2、painless脚本
GET metric/_search
{
"size": 1,
"script_fields": {
"pow":{
"script":{
"lang": "painless",
"source": "Math.pow(3,3)"
}
},
"pow/1":{
"script":{
"lang": "painless",
"source": "Math.pow(27,1/3)"
}
},
"sqrt":{
"script":{
"lang": "painless",
"source": "Math.sqrt(100)"
}
},
"log":{
"script":{
"lang": "painless",
"source": "Math.log(Math.E)"
}
}
}
}
执行结果:
"fields" : {
"pow/1" : [
1.0
],
"sqrt" : [
10.0
],
"log" : [
1.0
],
"pow" : [
27.0
]
}
2、脚本简单语法
"script": {
"lang": "...",
"source" | "id": "...",
"params": { ... }
}
官方给出的解释:
1、The language the script is written in, which defaults to painless.
2、The script itself which may be specified as source for an inline script or id for a stored script.
3、Any named parameters that should be passed into the script.
3、对索引中的字段运算
以系统资源指标为例,算出cpu的使用率
cpu使用率=cpu总使用率/cpu核数
脚本获取字段值的方法:doc['字段名']
GET metric/_search
{
"from": 0,
"size": 1, //取最新的一条数据,下面按时间排序了
"query": {
"match": { //筛选与cpu相关的指标
"metricset.name":"cpu"
}
},
"sort":{ //按时间排序
"timestamp":"desc"
},
"_source": { //控制显示的字段
"includes": ["cpu_pct","system.cpu.cores","system.cpu.total.pct","timestamp"]
},
"script_fields": {
"cpu_pct": { //自己定义存放结果的名称
"script": {
"lang": "expression", //使用expression脚本
"source": "doc['system.cpu.total.pct'] / doc['system.cpu.cores']"
}
}
}
}
4、对人工智能感兴趣点击下面的连接
现在人工智能非常火爆,很多朋友都想学,但是一般的教程都是为博硕生准备的,太难看懂了。最近发现了一个非常适合小白入门的教程,不仅通俗易懂而且还很风趣幽默。所以忍不住分享一下给大家。点这里可以跳转到教程。