Elasticsearch 计数数组中的元素,对于具有值的 属性

Elasticsearch count elements in array, for a property having a value

我有一个结构如下的文档:

{
  "products": [
    {
      "variants": [
        {
          "type": "type_1"
        },
        {
          "type": "type_2"
        }
      ]
    }
  ]
}

"variants"为动态映射。我想计算具有特定类型的变体。如果我使用术语聚合,它将 return 所有类型的桶键及其各自的文档计数,但我希望我传递的类型出现在桶键及其各自的文档计数中。

或者他们有什么方法可以只计算变体而不是文档,并获取类型作为键和值作为计数的桶

有人可以帮我查询吗?

我用脚本解决了。

{
  "aggs": {
    "agg_terms_types": {
      "terms": {
        "script": {
          "source": "params.selected_types",
          "params": {
            "selected_types": [
              "type_1"
            ]
          }
        }
      }
    }
  }
}