【问题标题】:Merging doc_count result from keyed buckets合并来自键控存储桶的 doc_count 结果
【发布时间】:2020-02-18 02:35:14
【问题描述】:

我有一个类似的查询

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

我得到的结果是带有键作为月份名称的存储桶。

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

我想要结果,其中以前的桶的文档计数被覆盖与下一个的文档计数合并。

【问题讨论】:

    标签: php elasticsearch nosql elasticsearch-5


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      MMM的格式替换为YYYY-MMM如下:

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

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

      【讨论】:

      • 这将无法达到我使用键控存储桶的目的
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-10
      • 2019-01-27
      • 1970-01-01
      • 2016-12-02
      • 2017-03-31
      • 1970-01-01
      • 2010-12-01
      相关资源
      最近更新 更多