语法样例

  1. GET cloud_platform_hopper_20191123/_search
  2. {
  3. "query": {
  4. "bool": {
  5. "should": [],
  6. "must_not": [],
  7. "must": [
  8. {
  9. "match_phrase": {
  10. "event_id.keyword": "100122"
  11. }
  12. }
  13. ]
  14. }
  15. },
  16. "from": 0,
  17. "size": 1,
  18. "aggs": {
  19. "profit": {
  20. "scripted_metric": {
  21. "init_script": "params._agg.transactions = []; params._agg.alls = []",
  22. "map_script": "params._agg.transactions.add(doc['has_100131'].value != null ? doc['has_100131'].value : 0); params._agg.alls.add(doc['cloud_id.keyword'].value != null ? 1 : 0)",
  23. "combine_script": "double sum = 0; double count = 0; for (a in params._agg.transactions) { sum += a } for (a in params._agg.alls) { count += a } return [sum, count]",
  24. "reduce_script": "double sum = 0; double count = 0; for (a in params._aggs) { sum += a[0]; count += a[1] } return ['sum', sum, 'count', count, sum/count]"
  25. }
  26. }
  27. }
  28. }

说明

init_script

  • 输入参数:
    • params: {_agg: any[]} 全局变量
  • 对单个shard做处理时,初始化的变量。

map_script

  • 输入参数:
    • params: {_agg: any[]} 全局变量
    • doc 单条数据
  • 遍历单个shard所有数据,对每条数据做的处理,收集单条数据到全局中。

combine_script

  • 输入参数:
    • params: {_agg: any[]} 全局变量
  • 对单个shard全局变量,再次做处理。

reduce_script

  • 输入参数:
    • params:{_aggs: any[]} 全局变量
  • 多对个 shard 做聚合处理,每个shard的数据是 combine_script 的返回值。
文档更新时间: 2019-12-10 11:06   作者:admin