【发布时间】:2015-06-05 04:59:33
【问题描述】:
我的索引具有类似日志的结构:每当事件发生时,我都会插入一个文档版本。例如,这里是索引中的文档:
{ "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_key 是key 和subkey 的串联。此查询将为每个(键、子键)组合创建一个存储桶,并从每个存储桶返回一个示例文档。但是,我不知道如何聚合_source 的字段。
将不胜感激任何想法。谢谢!
【问题讨论】:
标签: elasticsearch