【问题标题】:elasticsearch filters aggregation does not return array formatelasticsearch过滤器聚合不返回数组格式
【发布时间】:2022-06-18 18:33:12
【问题描述】:

filters aggregation 将桶作为对象返回

      "buckets": {
        "errors": {
          "doc_count": 1
        },
        "warnings": {
          "doc_count": 2
        }
      }

但我想返回一个 buckets 数组,例如 terms aggregation

      "buckets": [
        { 
          "key": "errors",
          "doc_count": 1
        },
        { 
          "key": "warnings",
          "doc_count": 2
        }
      ]

这是否可能,或者可以在查询中进行任何类型的数据转换以实现这一点?

【问题讨论】:

    标签: elasticsearch elasticsearch-aggregation elasticsearch-query


    【解决方案1】:

    您可以通过提供 array of filters 来实现,但在这种情况下,您的存储桶将是匿名的:

    GET logs/_search
    {
      "size": 0,
      "aggs" : {
        "messages" : {
          "filters" : {
            "filters" : [    <--- specify array
              { "match" : { "body" : "error"   }},
              { "match" : { "body" : "warning" }}
            ]
          }
        }
      }
    }
    

    响应将以相同的顺序提供一组结果桶

      "buckets": [
        {
          "doc_count": 1
        },
        {
          "doc_count": 2
        }
      ]
    

    【讨论】:

    • 谢谢。我知道匿名过滤器,但不幸的是我需要将密钥映射到 doc_count
    猜你喜欢
    • 2015-09-17
    • 2014-02-02
    • 2021-04-19
    • 1970-01-01
    • 2015-12-30
    • 1970-01-01
    • 1970-01-01
    • 2021-11-18
    • 1970-01-01
    相关资源
    最近更新 更多