我的索引中包含很多文件,他們每個人都有多個版本,例如:獲取最新的文檔版本和彙總結果
{"doc_id": 13,
"version": 1,
"text": "bar"}
{"doc_id": 13,
"version": 2,
"text": "bar"}
{"doc_id": 13,
"version": 3,
"text": "bar"}
{"doc_id": 14,
"version": 1,
"text": "foo"}
{"doc_id": 14,
"version": 2,
"text": "bar"}
我想每個文檔的最後一個版本,並彙總他們(最後的版本)使用terms
聚合。
我試着使用top hits
檢索最後的版本:
{"size" :0,
"aggs" : {
"doc_id_groups" : {
"terms" : {
"field" : "doc_id",
"size" : "0"
},
"aggs" : {
"docs" : {
"top_hits" : {
"size" : 1,
"sort" : {
"version" : {
"order" : "desc"
}
}
}
}
}
}
}
}
但我不能做聚合,因爲top hits
不支持子聚合。
我猜測檢索ID然後聚合他們將是非常沉重的客戶端操作。
也許腳本可以幫助嗎?
更新:一件事我忘了提:聚合前的文件按時間範圍過濾,所以我們不知道哪個版本是在索引時間最近,僅在搜索時
鑑於上述示例文檔,您期待什麼結果? – jay
@jay我已經編輯了一些例子。我期待這樣的事情:''水桶「:[ { 」key「:」bar「, 」doc_count「:2 }]' –
您是否需要一次完成這項工作,可以創建一個輔助索引來執行你所需要的嗎? – Val