Elasticsearch中的多个聚合

时间:2017-06-23 16:42:29

标签: elasticsearch elasticsearch-aggregation

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

首先查询:

{
    "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
                    }
                }
            }
        }
    }
}

1 个答案:

答案 0 :(得分:3)

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

{
  "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
          }
        }
      }
    }
  }
}