我一直在使用基数来查找一些独特的字段,例如作者
"aggs": {
"author_count" : {
"cardinality" : {
"field" : "author"
}
}
}
这适用于所有具有唯一作者的作者字段。
现在我想找到这些独特作者的总大小。通过其他查询,我刚刚添加了
"aggs":{
"sum":{
"field" : "length" }}}
但是当我尝试这个时,它给了我所有东西的全长,而不仅仅是独特的作者。
因此,例如,如果字段作者只包含一个“Kim”,则应返回此值。 我希望每位作者只编写一本书,并将所有页面长度加在一起。
例如
"author" : "kim",
"length": 100
"author" : "lolo",
"length": 100
输出应为author_count 2
和total_length 200
。
但是
"author" : "kim",
"length": 100
"author" : "lolo",
"length": 100
"author" : "lolo",
"length": 100
输出应为author_count 1
和total_length 100
。因为kim是唯一独特的作者(作者只写了一本书)
有什么想法吗?
答案 0 :(得分:1)
在理解了问题后,可以使用bucket selector aggregation和sum bucket aggregation来实现。作者字段上的第一个术语聚合将给出所有独特的作者,然后value count aggregation将提供这些独特作者编写的书籍。 total_sum 总计页面长度。
现在,桶选择器只会保留那些只写过一本书的作者的桶,最后 sum_bucket 总结那些作者的长度
{{1}}