问题描述
{
"aggs": {
"genres": {
"terms": {
"field": "genre","size": 2
},"aggs": {
"artists": {
"terms": {
"field": "artist","size": 3
}
}
}
}
}
}
我获得最高流派,每一种流派都获得最高艺术家。结果看起来像这样:
{
"genres": {
"buckets": [
{
"key": "genre1","doc_count": 1000,"artists": [
{
"key": "artist1","doc_count": 100
},{
"key": "artist2",{
"key": "artist3","doc_count": 100
}
]
},{
"key": "genre2","artists": [
{
"key": "artist3",{
"key": "artist4",{
"key": "artist5","doc_count": 100
}
]
}
]
}
}
我想进行归一化(不确定是否是正确的术语),每个流派返回的艺术家,因此它总是返回前3名,但也返回其他流派返回的任何其他艺术家。因此,无论我看哪种类型的作品,我都会看到相同的艺术家。我希望返回的结果看起来像这样:
{
"genres": {
"buckets": [
{
"key": "genre1","doc_count": 5
},"doc_count": 2
}
]
},{
"key": "artist1","doc_count": 3
},"doc_count": 1
}
]
}
]
}
}
在Elasticsearch中这可能吗?如果没有,是否有人有任何整洁的方法来处理结果以达到结果集?
为了使问题更有趣一点,这仅是2个级别(类型和艺术家),但是我希望能够在任意数量的级别上做到这一点。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)