Объединить два запроса агрегации в эластичном поиске - PullRequest
0 голосов
/ 15 октября 2019

У меня есть два запроса на агрегацию, такие как

{
  "size": 0,
  "aggregations": {
    "count": {
      "terms": {
        "field": "iaClaimChargeID",
        "size": 100000
      },
      "aggs": {
        "PaymentAmt": {
          "sum": {
            "field": "PaymentAmt"
          }
        },
        "payment_amt_bucket_filter": {
          "bucket_selector": {
            "buckets_path": {
              "PaymentAmt": "PaymentAmt"
            },
            "script": "params.PaymentAmt !=0"
          }
        },
        "duplicate": {
          "top_hits": {
            "sort": [
              {
                "PaymentDate": {
                  "order": "asc"
                }
              }
            ],
            "size": 10
          }
        }
      }
    }
  }
}

Второй -

{
  "size": 0,
  "aggs": {
    "countsIaclaimchargeID": {
      "terms": {
        "field": "iaClaimChargeID",
         "size": 1000
      },
      "aggs": {
        "PaymentAmtcount": {
          "terms": {
            "field": "PaymentAmt"
          }
        }
      }
    }
  }
}

В первом запросе я получаю сумму платежа Amt и количество в соответствии с claimchargeID.

Для второго я получаю подсчетные ячейки с идентификатором claimcharge id и количество связанных с ними сумм платежей.

Как объединить обе эти агрегации так, чтобы я мог получить

  1. Количество IaclaimchargeID
  2. Сумма суммы платежа, относящаяся к каждому ClaimchargeId
  3. Количество каждой суммы платежа, связанной с IamclaimchargeID.

Если я так объединяюсь

{
  "size": 0,
  "aggs": {
    "countsIaclaimchargeID": {
        "terms": {
          "field": "iaClaimChargeID",
           "size": 1000
        },
        "aggs": {
          "PaymentAmtcount": {
            "terms": {
              "field": "PaymentAmt"
            },
            "aggs": {
            "PaymentAmt": {
              "sum": {
                "field": "PaymentAmt"
              }
            },
            "payment_amt_bucket_filter": {
              "bucket_selector": {
                "buckets_path": {
                  "PaymentAmt": "PaymentAmt"
                },
                "script": "params.PaymentAmt !=0"
              }
            },
            "duplicate": {
              "top_hits": {
                "sort": [{
                  "PaymentDate": {
                    "order": "asc"
                  }
                }],
                "size": 10
              }
            }
          }  
        }    
      }
    }
  }
}

Тогда я получаю пустые ведра для PaymentAmt.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...