Tôi đang sử dụng ElasticSearch v5. Tôi đang cố gắng làm điều gì đó tương tự như được mô tả trong Elasticsearch analytics percent nơi tôi có tập hợp thuật ngữ và tôi muốn tính phần trăm là giá trị từ mỗi nhóm trên tổng số tất cả các nhóm. Đây là yêu cầu của tôi:ElasticSearch tính phần trăm cho mỗi nhóm từ tổng số
{
"query": {
"match_all": {}
},
"aggs": {
"periods": {
"terms": {
"field": "periods",
"size": 3
},
"aggs": {
"balance": {
"sum": {
"field": "balance"
}
}
}
},
"total_balance": {
"sum_bucket": {
"buckets_path": "periods>balance"
}
}
}
}
Kết quả tôi nhận được trở lại này như thế này:
{
"aggregations": {
"periods": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 1018940846,
"buckets": [
{
"key": 1177977600000,
"doc_count": 11615418,
"balance": {
"value": 2492032741768.1616
}
},
{
"key": 1185926400000,
"doc_count": 11592425,
"balance": {
"value": 2575365325406.6533
}
},
{
"key": 1175385600000,
"doc_count": 11477402,
"balance": {
"value": 2456256695380.8306
}
}
]
},
"total_balance": {
"value": 7523654762555.645
}
}
}
Làm thế nào để tính toán "cân bằng"/"total_balance" cho mỗi mục trong xô từ ElasticSearch? Tôi đã thử tập hợp tập lệnh xô ở cấp nhóm (giai đoạn), nhưng tôi không thể đặt buckets_path thành total_balance. Bài viết này https://discuss.elastic.co/t/combining-two-aggregations-to-get-term-percentage/22201 nói về việc sử dụng các cụm từ có ý nghĩa thống kê, nhưng tôi cần tính toán sử dụng các trường cụ thể, chứ không phải doc_count. Tôi biết tôi có thể làm điều này như một phép tính đơn giản ở phía khách hàng, nhưng tôi muốn làm điều này tất cả cùng nhau trong ElasticSearch nếu có thể.
Bạn có thể thêm vào câu hỏi của mình: dữ liệu nguồn mà bạn lập chỉ mục trong elasticsearch và kết quả được tính toán theo cách thủ công mà bạn muốn đạt được không? – paweloque