2016-12-14 7 views
0

У меня есть индекс с тремя полями: user_id, count, timestamp.эластичный поиск процентиля агрегации

Хотелось бы иметь возможность суммировать счетчик user_id, что легко с помощью поиска эластичности, однако то, что я также хочу сделать, - это процентный рейтинг по этим результирующим данным.

Возможно ли это?

ответ

1

Да, это может быть достигнуто с использованием Конвейерных Процентили Bucket Aggregation, который представляет собой агрегацию родственного трубопровода, который вычисляет процентили по всему ведру заданной метрики в агрегации одноуровневой. Указанная метрика должна быть числовой, а совокупная агрегировка должна быть агрегатом с несколькими байтами.

агрегацию percentiles_bucket выглядит в изоляции:

{ 
    "percentiles_bucket": { 
     "buckets_path": "the_sum" 
    } 
} 

Следующий фрагмент кода вычисляет сумму всех общих ежемесячных ведер продаж:

{ 
    "aggs" : { 
     "sales_per_month" : { 
      "date_histogram" : { 
       "field" : "date", 
       "interval" : "month" 
      }, 
      "aggs": { 
       "sales": { 
        "sum": { 
         "field": "price" 
        } 
       } 
      } 
     }, 
     "sum_monthly_sales": { 
      "percentiles_bucket": { 
       "buckets_paths": "sales_per_month>sales", 
       "percents": [ 25.0, 50.0, 75.0 ] 
      } 
     } 
    } 
} 

И следующее может быть ответ:

{ 
    "aggregations": { 
     "sales_per_month": { 
     "buckets": [ 
      { 
       "key_as_string": "2015/01/01 00:00:00", 
       "key": 1420070400000, 
       "doc_count": 3, 
       "total_sales": { 
        "value": 50 
       }, 
       "t-shirts": { 
        "doc_count": 2, 
        "sales": { 
         "value": 10 
        } 
       }, 
       "t-shirt-percentage": { 
        "value": 20 
       } 
      }, 
      { 
       "key_as_string": "2015/02/01 00:00:00", 
       "key": 1422748800000, 
       "doc_count": 2 
       "total_sales": { 
        "value": 60 
       }, 
       "t-shirts": { 
        "doc_count": 1, 
        "sales": { 
         "value": 15 
        } 
       }, 
       "t-shirt-percentage": { 
        "value": 25 
       } 
      } 
     ] 
     } 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^