前置條件
inline script默認是不開啓的
在config/elasticsearch.yml中加入
script.inline: true
script.indexed: true
官方文檔:
https://www.elastic.co/guide/en/elasticsearch/guide/current/script-score.html
https://www.elastic.co/guide/en/elasticsearch/reference/2.3/modules-scripting.html
示例:
{
"script": {
"lang": "painless",
"inline": "params.tmp=(_value-doc['aaa'].value)/doc['aaa'].value;if(params.min>params.tmp){params.min=params.tmp}if(params.max<params.tmp){params.max=params.tmp}return params.max-params.min",
"params": {
"tmp":0,
"min": 0,
"max":0
}
}
}
然後對字段進行sum聚合,就可以統計出>0的項多少個
*注: 只有數字字段纔可以在doc[‘xx’]中訪問
內置函數
https://www.elastic.co/guide/en/elasticsearch/guide/current/script-score.html
語法文檔
http://cwiki.apachecn.org/pages/viewpage.action?pageId=10027215