Elasticsearch 中的多重聚合

Multiple aggregations in Elasticsearch

我想对两个字段进行术语聚合。我不想要子聚合,但我想要两个不同的存储桶组中的结果,就像我对这两个字段进行了两个单独的查询一样。是否可以将这两个查询合并为一个?

第一次查询:

{
    "size" : 0,
    "aggs" : {
        "brands" : {
            "terms" : {
                "field" : "my_field1",
                "size" : 15
            },
            "aggs" : {
                "my_field_top_hits1" : {
                    "top_hits" : {
                        "size" : 1
                    }
                }
            }
        }
    }
}

第二次查询:

{
    "size" : 0,
    "aggs" : {
        "brands" : {
            "terms" : {
                "field" : "my_field2",
                "size" : 15
            },
            "aggs" : {
                "my_field_top_hits2" : {
                    "top_hits" : {
                        "size" : 1
                    }
                }
            }
        }
    }
}

除非我遗漏了一些明显的东西,否则你只需要做:

{
  "size": 0,
  "aggs": {
    "brands_field1": {
      "terms": {
        "field": "my_field1",
        "size": 15
      },
      "aggs": {
        "my_field_top_hits1": {
          "top_hits": {
            "size": 1
          }
        }
      }
    },
    "brands_field2": {
      "terms": {
        "field": "my_field2",
        "size": 15
      },
      "aggs": {
        "my_field_top_hits1": {
          "top_hits": {
            "size": 1
          }
        }
      }
    }
  }
}