Elasticsearch - поле запроса против агрегации - PullRequest
0 голосов
/ 14 ноября 2018

Я изучаю простоту запроса и агрегирования данных с использованием эластичного поиска. Но я не могу сводить и объединять данные в одном запросе, как показано ниже:

С учетом данных:

enter image description here

Есть ли способ запросить результат ниже которое сводит и агрегирует значение, как показано ниже:

enter image description here

Обязательный результат:

{  
   {  
      "A":a1,
      "B":b1,
      "Value":3
   },
   {  
      "A":a1,
      "B":b2,
      "Value":3
   },
   {  
      "A":a2,
      "B":b2,
      "Value":4
   },
   {  
      "A":a1,
      "B":b3,
      "Value":11
   }
}

1 Ответ

0 голосов
/ 14 ноября 2018

Да, вы можете вложить два terms агрегата для A и B, вот так, и вы получите именно те результаты, которые ожидаете:

{
  "size": 0,
  "aggs": {
    "A": {
      "terms": {
        "field": "A"
      },
      "aggs": {
        "B": {
          "terms": {
            "field": "B"
          },
          "aggs": {
            "value_sum": {
              "sum": {
                "field": "Value1"
              }
            }
          }
        }
      }
    }
  }
}
...