2016-07-24 2 views
0

Следующее сопоставление агрегируется на нескольких уровнях в документах группировки полей с использованием другого поля.Сумма для нескольких диапазонов для агрегации GroupBy в Elasticsearch

Mapping:

{ 
    'predictions': { 
     'properties': { 
       'Company':{'type':'string'}, 
       'TxnsId':{'type':'string'}, 
       'Emp':{'type':'string'}, 
       'Amount':{'type':'float'}, 
       'Cash/online':{'type':'string'}, 
       'items':{'type':'float'}, 
       'timestamp':{'type':'date'} 
      } 
      } 
     } 

Мое требование немного сложно, мне нужно

  1. Для каждого Emp (Получение различных сотрудников)
  2. Проверить является ли онлайн или обналичить сделка
  3. Группа по предметам с диапазонами, такими как 0-10,11-20,21-30 ....
  4. Сумма Сумма

Окончательный выход, как:

>Emp-online-range-Amount  
>a-online-(0-10)-1240$  
>a-online-(21-30)-3543$  
>b-online-(0-10)-2345$  
>b-online-(11-20)-3456$ 
+0

Каковы поплавок значения 'Cash/online'? – Val

ответ

0

Что-то, как это должно сделать работу:

{ 
    "size": 0, 
    "aggs": { 
    "by_emp": { 
     "terms": { 
     "field": "Emp" 
     }, 
     "aggs": { 
     "cash_online": { 
      "filters": { 
      "filters": { 
       "cashed": { 
       "term": { 
        "Cash/online": "cached" 
       } 
       }, 
       "online": { 
       "term": { 
        "Cash/online": "online" 
       } 
       } 
      } 
      }, 
      "aggs": { 
      "ranges": { 
       "range": { 
       "field": "items", 
       "ranges": [ 
        { 
        "from": 0, 
        "to": 11 
        }, 
        { 
        "from": 11, 
        "to": 21 
        }, 
        { 
        "from": 21, 
        "to": 31 
        } 
       ] 
       }, 
       "aggs": { 
       "total": { 
        "sum": { 
        "field": "Amount" 
        } 
       } 
       } 
      } 
      } 
     } 
     } 
    } 
    } 
} 
+0

любая удача с этим? – Val