您可以通過不同方式解決您的需求。
最簡單的方法是,如果類型不存在,則將指定「未提及」的修復值與songs
的genre
字段進行索引。您可以在建立索引時或在字段映射中定義「null_value」。
"SONG_GENRE": {"type": "string", "null_value": "notmentioned"},
"SONG_ARTIST": {"type": "string", "null_value": "notmentioned"},
因此,在聚合(嵌套)期間,您將自動找到針對沒有流派的歌曲的「未提及」計數。
另一種方法是使用缺少的過濾器作爲另一個聚合以及正常聚合。像下面的東西。
{
"aggs": {
"SONG_GENRE": {
"terms": {
"field": "SONG_GENRE"
},
"aggs": {
"SONG_ARTIST": {
"terms": {
"field": "SONG_ARTIST"
}
},
"MISSING_SONG_ARTIST": {
"filter": {
"missing": {
"field": "SONG_ARTIST"
}
}
}
}
},
"MISSING_SONG_GENRE": {
"filter": {
"missing": {
"field": "SONG_GENRE"
}
},
"aggs": {
"MISSING_SONG_GENRE_SONG_ARTIST": {
"terms": {
"field": "SONG_ARTIST"
}
},
"MISSING_SONG_GENRE_MISSING_SONG_ARTIST": {
"filter": {
"missing": {
"field": "SONG_ARTIST"
}
}
}
}
}
}
}
我還沒有驗證語法。這只是給你一個想法
另一種黑客方式可能是將缺少的計數(總點擊數 - 所有聚合計數)作爲不計類型的計數。
您需要將您的表格與其他主表格連接起來。那麼你需要使用group by –
在elasticsearch中使用group?你明白我在說什麼嗎? –