painless之前感觉没必要学,然后最近看了看painless可以做的功能还是很强大的,有的聚合如果能用上painless是很方便的,举个例子
对某一个index中,有两个字段a和b,需求是先算出b-a的值,然后累加,在求avg,这个如果用es的聚合去实现这个流程,至少两次请求,但是painless可以一次就做到
PUT /test/_doc/1
{
"a":10,
"b":20
}
PUT /test/_doc/2
{
"a":15,
"b":26
}
PUT /test/_doc/3
{
"a":18,
"b":26
}
POST /test/_search
{
"size": 0,
"aggs": {
"b_a_avg": {
"avg": {
"script": {
"lang": "painless",
"source":"return doc['b'].value-doc['a'].value"
}
}
}
}
}
painless文档,具体的语法看文档吧,主要是内置对象,可以做批量更新,聚合,查询等等操作,很实用
网友评论