Elasticsearch:查找具有不同值的文档,然后对它们进行聚合

时间:2015-06-04 16:51:43

标签: elasticsearch

我的索引具有类似日志的结构:每当发生事件时我都会插入一个文档版本。例如,以下是索引中的文档:

{ "key": "a", subkey: 0 }
{ "key": "a", subkey: 0 }
{ "key": "a", subkey: 1 }
{ "key": "a", subkey: 1 }
{ "key": "b", subkey: 0 }
{ "key": "b", subkey: 0 }
{ "key": "b", subkey: 1 }
{ "key": "b", subkey: 1 }

我正在尝试在ElasticSearch中构造一个查询,它基本上等同于以下SQL查询:

SELECT COUNT(*), key, subkey
FROM (SELECT DISTINCT key, subkey FROM t)

这个查询的答案显然是

(1, a, 0)
(1, a, 1)
(1, b, 0)
(1, b, 1)

我如何在Elasticsearch中复制此查询?我想出了以下内容:

GET test_index/test_type/_search?search_type=count
{
  "aggregations": {
    "count_aggr": {
      "terms": {
        "field": "concatenated_key"
      },
      "aggs": {
        "sample_doc": {
          "top_hits": {
            "size": 1
          }
        }
      }
    }
  }
}

concatenated_keykeysubkey的串联。此查询将为每个(密钥,子密钥)组合创建一个存储桶,并从每个存储桶返回一个样本文档。但是,我不知道如何汇总_source

的字段

会感激任何想法。谢谢!

0 个答案:

没有答案