复合键的弹性搜索查询,如 SQL

Elastic search query for composite keys like in SQL

我有以下情况: 假设我有一个关系 table :

Key1   Key2  Key3   Value

A       x     v1      0
A       x     v1      10
B       x     v1      5
A       y     v2      7
A       y     v2      2

这里我有 (Key1, Key2, Key3) 的逻辑组合键。现在我需要具有最大值的记录。所以我期望下面的结果对应于不同的逻辑键:

Key1   Key2  Key3   Value

A       x     v1      10
B       x     v1      5
A       y     v2      7

现在我想为它编写一个 Elastic Search 查询。有人可以给我一些想法吗?

然后您可以像这样进行多级 terms 聚合:

{
  "size": 0,
  "aggs": {
    "key1": {
      "terms": {
        "field": "key1"
      },
      "aggs": {
        "key2": {
          "terms": {
            "field": "key2"
          },
          "aggs": {
            "key3": {
              "terms": {
                "field": "key3"
              },
              "aggs": {
                "doc": {
                  "top_hits": {
                    "sort": {"value": "desc"}
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}