使用基数但试图用它找到总长度
Using Cardinality but trying to find total length with it
我一直在使用基数来查找一些独特的字段,例如作者
"aggs": {
"author_count" : {
"cardinality" : {
"field" : "author"
}
}
}
这有效并计算其中具有唯一作者的所有作者字段。
现在我想找出这些唯一作者的总规模。对于其他查询,我只是通过添加
来完成此操作
"aggs":{
"sum":{
"field" : "length" }}}
但是当我尝试这个时,它会给我所有内容的总长度,而不仅仅是针对独特的作者。
因此,例如,如果字段 author 仅包含一个 "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是唯一位唯一作者(只写过一本书的作者)
有什么想法吗?
理解问题后,可以实现 bucket selector aggregation and sum bucket aggregation. First terms aggregation on author field will give all the unique authors, then value count aggregation 将赠送这些独特作者所写的书籍。
total_sum 总页数。
现在桶选择器将只保留那些只写过一本书的作者的桶,最后 sum_bucket 总结这些作者的所有长度
{
"size": 0,
"aggs": {
"unique_author": {
"terms": {
"field": "author",
"size": 100
},
"aggs": {
"total_book_count": {
"value_count": {
"field": "author"
}
},
"total_sum": {
"sum": {
"field": "length"
}
},
"only_single_book_author": {
"bucket_selector": {
"buckets_path": {
"total_books": "total_book_count"
},
"script": "total_books==1"
}
}
}
},
"page_length": {
"sum_bucket": {
"buckets_path": "unique_author>total_sum"
}
}
}
}
我一直在使用基数来查找一些独特的字段,例如作者
"aggs": {
"author_count" : {
"cardinality" : {
"field" : "author"
}
}
}
这有效并计算其中具有唯一作者的所有作者字段。
现在我想找出这些唯一作者的总规模。对于其他查询,我只是通过添加
来完成此操作 "aggs":{
"sum":{
"field" : "length" }}}
但是当我尝试这个时,它会给我所有内容的总长度,而不仅仅是针对独特的作者。
因此,例如,如果字段 author 仅包含一个 "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是唯一位唯一作者(只写过一本书的作者)
有什么想法吗?
理解问题后,可以实现 bucket selector aggregation and sum bucket aggregation. First terms aggregation on author field will give all the unique authors, then value count aggregation 将赠送这些独特作者所写的书籍。 total_sum 总页数。
现在桶选择器将只保留那些只写过一本书的作者的桶,最后 sum_bucket 总结这些作者的所有长度
{
"size": 0,
"aggs": {
"unique_author": {
"terms": {
"field": "author",
"size": 100
},
"aggs": {
"total_book_count": {
"value_count": {
"field": "author"
}
},
"total_sum": {
"sum": {
"field": "length"
}
},
"only_single_book_author": {
"bucket_selector": {
"buckets_path": {
"total_books": "total_book_count"
},
"script": "total_books==1"
}
}
}
},
"page_length": {
"sum_bucket": {
"buckets_path": "unique_author>total_sum"
}
}
}
}