Calculate sum of run_time without runtime fields?

I want to get the sum of run_time variant, by using runtime_mapping I got mistakes.
I know that it'a new feature in ES 7.12, but I can't upgrade it because it's not depend on me.
So how could I get the answer without runtime_mapping?

GET log/_search
{
  "query": {
    "bool": {
                "must": [
                {
                    "match": {
                    "username": "xxx"
                    }
                },{
                  "range": {
                    "time_end": {
                        "gte": "2021-12-01 11:40:06",
                        "lte": "2021-12-12 11:40:06"
                    }
                    }
                }
                ]
          }
  }
  , "_source": ["username", "time_start","time_submit", "time_end", "gpus_alloc"]
  ,
  "runtime_mappings": {
    "exec_time.weighted": {
      "type": "long",
      "script": """
        long exec_time;
        long timediff = doc['time_end'].date.getMillis() - doc['time_start'].date.getMillis();
        String gpus = doc['gpus_alloc.keyword'].value;
        int idx = gpus.lastIndexOf(':');
        if(idx != -1)
           exectime = timediff * Integer.parseInt(gpus.substring(idx+1));
        else
           exectime = 0;
        emit(exectime);
      """
    }
  },
  "aggs": {
    "U1": {
      "sum": {
        "field": "exec_time.weighted"
      }
    }
  }
}

the Error information is as follow:

{
  "error": {
    "root_cause": [
      {
        "type": "parsing_exception",
        "reason": "Unknown key for a START_OBJECT in [runtime_mappings].",
        "line": 22,
        "col": 23
      }
    ],
    "type": "parsing_exception",
    "reason": "Unknown key for a START_OBJECT in [runtime_mappings].",
    "line": 22,
    "col": 23
  },
  "status": 400
}

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.