Elasticsearch - 执行多字段最大聚合

Elasticsearch - perform multi-field max aggregation

我有一个包含来自不同来源的事件的索引,因此,我对同一字段有两个不同的名称,“accounting_date”和“dt_comptable",我需要查询并获取两个字段值的最大值, 以下查询适用于我的一个字段:

GET indexXX/_search
{
  "size": 0,
  "aggs": {
    "latest_accounting_date": {
      "max": {
        "field": "dt_comptable"
      }
    }
  }
}  

我需要包含其他字段“accounting_date”。

输入 scripting... 您可以指定一个脚本来检索任一字段(以存在的字段为准),而不是指定字段,但是 max 聚合将能够同时处理这两个字段他们:

GET indexXX/_search
{
  "size": 0,
  "aggs": {
    "latest_accounting_date": {
      "max": {
        "script": {
          "source": "doc['dt_comptable'].size() > 0 ? doc['dt_comptable'].value : doc['accounting_date'].value"
        }
      }
    }
  }
}