【问题标题】:Elasticsearch Top level aggregation / search body metadataElasticsearch 顶级聚合/搜索正文元数据
【发布时间】:2020-11-06 12:42:22
【问题描述】:

可以像这样包含子聚合metadata

GET kibana_sample_data_flights/_search
{
  "size": 0,
  "query": ...,
  "aggs": {
    "by_delay": {
      "terms": {
        "field": "FlightDelay"
      },
      "meta": {                <---
        "key": "val"
      }
    },
    "by_cancelled": {
      "terms": {
        "field": "Cancelled"
      },
      "meta": {                <---
        "key": "val"
      }
    }
  }
}

现在,有几十个这样的子聚合和一些共享元数据。虽然它只适用于 aggs,但我不介意将它放在 query 部分的某个位置。那么是否有针对每个搜索主体的元数据字段?

我想我可以将所有这些子聚合包装在 match_all 过滤器组中:

{
  "size": 0,
  "query": ...,
  "aggs": {
    "meta_parent": {
      "filter": {
        "match_all": {}
      },
      "meta": {
        "shared": "meta"
      },
      "aggs": {
        "by_delay": ...,
        "by_cancelled": ...
      }
    }
  }
}

有没有更好的办法?

【问题讨论】:

    标签: elasticsearch elasticsearch-aggregation elasticsearch-query


    【解决方案1】:

    如果您没有任何query 部分,我会利用global aggregation,如下所示:

    {
      "size": 0,
      "aggs": {
        "meta_parent": {
          "global": {},
          "meta": {
            "shared": "meta"
          },
          "aggs": {
            "by_delay": ...,
            "by_cancelled": ...
          }
        }
      }
    }
    

    否则,您建议的 filter/match_all 聚合也可以工作:

    {
      "size": 0,
      "aggs": {
        "meta_parent": {
          "filter": {
            "match_all": {}
          },
          "meta": {
            "shared": "meta"
          },
          "aggs": {
            "by_delay": ...,
            "by_cancelled": ...
          }
        }
      }
    }
    

    【讨论】:

    • global 不会考虑到query,不是吗?
    • 不,但是由于您没有任何查询部分,这就是我建议全局聚合的原因
    • 明白了。我的错 - 我确实有一个需要申请的查询。
    • 那么是的,如果您有查询部分,您建议的 filter/match_all 聚合将是全局聚合的可行替代方案。
    • 是的,但我们回到了我最初的建议。我希望确实有一个没有额外 meta_parent 的解决方案。
    猜你喜欢
    • 2016-02-16
    • 2021-09-19
    • 2019-08-18
    • 2023-02-24
    • 2014-04-07
    • 1970-01-01
    • 1970-01-01
    • 2020-02-06
    • 1970-01-01
    相关资源
    最近更新 更多