2015-05-24 2 views
4

Используя функциональность гистограммы Elasticsearch, я могу поместить различные «диапазоны» данных в ведро, указав интервал. В этом случае '50':Гистограмма Elasticsearch, несколько типов интервалов?

Цена: 0-50 50-100 100-150 150-200 200-250 и т.д.

Это прекрасно работает, но это возвращает очень длинный список ведер. Что я предпочитаю:

0-50 50-100 100-200 200-400 400-1000 1000+

Или что-то любит. Можно ли сообщить ES, какие интервалы (/ диапазоны) должны возвращаться?

ответ

3

Вы должны использовать numeric range агрегации, которая позволяет точно указать, какие промежутки времени вы хотите, например, это:

{ 
    "aggs" : { 
     "price_ranges" : { 
      "range" : { 
       "field" : "price", 
       "ranges" : [ 
        { "to" : 50 }, 
        { "from" : 50, "to" : 100 }, 
        { "from" : 100, "to": 200 }, 
        { "from" : 200, "to": 400 }, 
        { "from" : 400, "to": 1000 }, 
        { "from" : 1000 } 
       ] 
      } 
     } 
    } 
} 

Это должно дать вам то, что вы ожидаете.

+1

Это на самом деле отвечает на вопрос, в то время как мой ответ просто дает больше мыслей о том, как использовать агрегацию гистограмм непрямым способом. – tiurin

3

Документация явно говорит о том, что histogram aggregation

Он динамически строит фиксированный размер (а.к.а. интервал) ведер над значениями.

То, что я могу думать о том, что для того, чтобы уменьшить количество ковшей вы можете применять логарифмическую шкалу (или любую другую нелинейную шкалу, например, квадратный корень, который даст достаточно детализации для конкретного набора данных) для значений с помощью опции сценария:

{ 
    "aggs": { 
     "prices": { 
      "histogram": { 
       "field": "price", 
       "script": "Math.log10(_value)", 
       "interval": 1 
      } 
     } 
    } 
} 

Это даст ведра с ключами 1, 2, 3, …, которые выделяются для исходных значений в пределах интервалов [0; 10), [10; 100), [100; 1000), …

Применяя обратную функцию (10 x) в случае клавиш на стороне клиента вы можете восстановить исходный масштаб.

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