Elasticsearch — Запрос — Условная проверка, если значение одного поля равно 0, используйте значение другого поля

#elasticsearch

Вопрос:

Я хочу иметь возможность проверить, старше ли документ, чем 60 mins на основе submittedDateTime . однако, когда submittedDateTime == 0 он должен использоваться createdDateTime для вычисления эластичного времени.

Образец _doc из myindex :

 . . .
_source: {
  "createdDateTime": 1630430956428,
  "submittedDateTime": 0
}
. . .
 

Я смог добиться этого с помощью сценариев запросов. Однако я хочу знать, возможно ли это сделать без сценариев? К сожалению, сценарии не сообщают мне количество строк документов, которые были обновлены.

 POST myindex/_update_by_query
{
   "script": {
      "lang": "painless",
      "source": """
            ZonedDateTime now = ZonedDateTime.ofInstant(Instant.ofEpochMilli(new 
            Date().getTime()), ZoneId.of('Z'));
            long endTimeValue = ctx._source.createdDateTime;
            if (ctx._source['submitAfterDateTime'] != 0) { 
             endTimeValue = ctx._source.submitAfterDateTime;
             }
             ZonedDateTime endTime = ZonedDateTime.ofInstant(Instant.ofEpochMilli(endTimeValue), 
             ZoneId.of('Z'));
             long elapsedMinutes = endTime.until(now, ChronoUnit.MINUTES);
             if (elapsedMinutes >= 60) { 
             ctx._source.status = "EXPIRED",
             ctx._source.expiredDateTime = now.toEpochSecond();
             }

          """
    }
}