朋友们,
我正在做一些分析,以从数以亿计的文档中找到唯一的对。模拟示例如下所示:
文档字段 1 字段 2
- AAA : BBB
- AAA : CCC
- 购买力平价:QQ
- 购买力平价:QQ
- XXX : 年年
- XXX : 年年
- 嗯:NNN
90% 的文档包含一个唯一的对,如上面文档 3、4、5、6 和 7 中所示,我对我的聚合结果不感兴趣。我有兴趣汇总文档 1 和 2。
术语聚合查询:
“聚合”:{
“f1”:{
“条款”:{
“字段”:“字段1”,
“min_doc_count”:2
},
“聚合”:{
“f2”:{
“条款”:{
“字段”:“字段 2”
}
}
}
}
}
术语聚合结果
“聚合”:{
“f1”:{
“桶”:[
{
“关键”:“PPP”,
“文档计数”:2,
“f2”:{
“桶”:[
{
"key": "QQQ",
“文档计数”:2
}
]
}
},
{
“关键”:“XXX”,
“文档计数”:2,
“f2”:{
“桶”:[
{
"key": "YYY",
“文档计数”:2
}
]
}
},
{
“钥匙”:“AAA”,
“文档计数”:2,
“f2”:{
“桶”:[
{
“关键”:“BBB”,
“文档计数”:1
},
{
“关键”:“CCC”,
“文档计数”:1
}
]
}
}
]
}
}
我只对聚合结果中的密钥AAA感兴趣。过滤包含不同对的聚合结果的最佳方法是什么?
我尝试了基数聚合,这导致了 unque 值计数。但是,我无法从聚合结果中过滤掉我不感兴趣的内容。
基数聚合查询
“聚合”:{
“f1”:{
“条款”:{
“字段”:“字段1”,
“min_doc_count”:2
},
“聚合”:{
“f2”:{
“基数”:{
“字段”:“字段 2”
}
}
}
}
}
基数聚合结果
“聚合”:{
“f1”:{
“桶”:[
{
“关键”:“PPP”,
“文档计数”:2,
“f2”:{
“价值”:1
}
},
{
“关键”:“XXX”,
“文档计数”:2,
“f2”:{
“价值”:1
}
},
{
“钥匙”:“AAA”,
“文档计数”:2,
“f2”:{
“价值”:2
}
}
]
}
}
至少如果我可以按基数排序,那将有助于我找到一些解决方法。请在这方面帮助我。
PS:编写 spark/mapreduce 程序来后处理/过滤聚合结果不是此问题的预期解决方案。