合并键控桶的 doc_count 个结果

Merging doc_count result from keyed buckets

我有一个类似

的查询
'aggs' => [
                'deadline' => [
                    'date_histogram' => [
                        'field' => 'deadline',
                        'interval' => 'month',
                        'keyed' => true,
                        'format' => 'MMM'
                    ]
                ]
            ]

我得到的结果是以键作为月份名称的桶。

我面临的问题是以月份名称作为上一年的键的桶被下一年的另一个月份覆盖(因为显然键是相同的)。

我想要的结果是,上一个被覆盖的桶的文档计数与下一个 doc_count 合并。

将格式从 MMM 替换为 YYYY-MMM 如下:

'aggs' => [
                'deadline' => [
                    'date_histogram' => [
                        'field' => 'deadline',
                        'interval' => 'month',
                        'keyed' => true,
                        'format' => 'YYYY-MMM'
                    ]
                ]
            ]

在此之后,您可以在应用程序级别处理合并过程

您可以在索引期间添加一个单独的月份字段并对其执行聚合,或者使用下面的脚本

{
  "size": 0,
  "aggs": {
    "deadline": {
      "histogram": {
         "script":  { "inline" : "return doc['deadline'].value.getMonthOfYear()" },
        "interval": 1
      }
    }
  }
}

创建一个单独的月份字段会有更好的性能