2017-04-20 41 views
12

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ể.

+0

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

Trả lời

1

Không, bạn không thể làm điều đó. Khi tôi viết bài này, chúng tôi đang ở phiên bản 6.1.

Theo https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-pipeline.html#buckets-path-syntax, chỉ có hai loại đường ống tổng hợp chính: cha mẹ và anh chị em ruột.

Vì vậy, để tham chiếu tập hợp total_balance từ trong các chu kỳ thời gian, chúng ta có thể tham chiếu một tập hợp "chú" từ thuộc tính buckets_path, điều này là không thể.

Các vấn đề liên quan