【发布时间】:2016-08-21 03:31:31
【问题描述】:
我有一个 Elasticsearch 图书数据库:
{
"id": 1,
"name": "Animal Farm"
},
{
"id": 2,
"name": "Brave New World"
},
{
"id": 3,
"name": "Nineteen Eighty-Four"
},
{
"id": 4,
"name": "Animal Farm"
},
{
"id": 5,
"name": "We"
}
如您所见,1 和4 中带有id 的书有冲突书名“Animal Farm”。但是,它们是不同的书。一个是乔治奥威尔的,另一个是关于农场动物的。
我想知道书名冲突的频率。对于上面的例子,预期的结果是:
{
"conflicts": [
{
"num_of_books": 2,
"count": "1"
},
{
"num_of_books": 1,
"count": "3"
}
]
}
2与num_of_books的条目是“动物农场”的冲突,并且发生过一次(因此count是1)。其他 3 本书的名称各不相同,因此它们以 num_of_books 的 1 和 count 的 3 出现在条目中。我不需要书名。只有数量很重要。
我知道 SQL 有“子查询”来执行此操作:
SELECT num_of_books, COUNT(*) AS _count
FROM (
SELECT COUNT(*) AS num_of_books
FROM books
GROUP BY name
)
GROUP BY num_of_books;
看了Nested Aggregation和Sub-Aggregations的文章,没看到实现目标的可能性。
任何评论都会有所帮助,谢谢!
【问题讨论】:
标签: elasticsearch subquery aggregation