对SQL中的复合键进行弹性搜索查询

时间:2017-03-16 09:21:17

标签: elasticsearch elastic-stack

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

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

现在我想为它编写一个弹性搜索查询。有人可以给我一些想法吗?

1 个答案:

答案 0 :(得分:0)

然后你可以使用这样的多级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"}
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}