我试图在Elasticsearch中进行多项聚合,但不是简单地计算包含每组术语的文档,而是希望它对第三个字段的值进行求和。
因此给定数据:
f1 f2 s
=== === ===
a a 1
a b 2
b a 2
a b 1
a b 2
a a 1
b b 3
a b 3
我想对f1和f2进行多项聚合,使用总和而不是文档计数,与以下内容相同:
{
aggs: {
f_1_2_score: {
multi_term: {
terms: [{ field: "f1" }, {field: "f2"}],
scoring: { field: "s" } // the illegal part I'm trying to replace
}
}
}
}
产生以下结果:
...
buckets: [
{ key: ["a", "a"], key_as_string: "a|a", doc_score: 2 },
{ key: ["a", "b"], key_as_string: "a|b", doc_score: 7 },
{ key: ["b", "a"], key_as_string: "b|a", doc_score: 2 },
{ key: ["b", "b"], key_as_string: "b|b", doc_score: 3 },
]
...
最简单/最好的方法是什么?
1条答案
按热度按时间x6492ojm1#
尝试以下操作,相当于
select sum(*) as s group by a, b order by s desc.