2014-10-09 3 views
1

Я пытаюсь построить запрос elasticsearch, который подсчитывает количество документов, где определенное поле находится в пределах определенного диапазона. Это агрегирование также содержится внутри агрегации гистограммы даты, но я не думаю, что это важно для цели этого вопроса.Как я могу подсчитать количество документов, где поле находится в пределах определенного диапазона?

Пример данных:

ID: Score 
01: 4 
02: 5 
03: 10  
04: 9 

Я хотел бы подсчитать количество документов, где «Score» является> = 9. Я попытался скрипты и фильтры внутри этого объединения, но я не могу получить его Работа.

Эта совокупность подсчитывает все документы, а не только те, которые соответствуют сценарию.

"aggs": { 
    "report_days": { 
     "date_histogram": { 
      "field": "Date", 
      "interval": "day" 
     }, 
     "aggs": { 
      "value_count": { 
       "field": "Score", 
       "script": "_value >=9" 
      } 
     } 
    } 
} 

Это следующая агрегация дает мне отказ синтаксического анализа, говоря Parse Failure [Expected [START_OBJECT] under [field], but got a [VALUE_STRING] in [value_count]]:

"aggs": { 
    "report_days": { 
     "date_histogram": { 
      "field": "Date", 
      "interval": "day" 
     }, 
     "aggs": { 
      "value_count": { 
       "field": "Score", 
       "filter": { 
        "range": { 
         "Score": { 
          "gte": 9 
         } 
        } 
       } 
      } 
     } 
    } 
} 

Спасибо за любые предложения!

ответ

0

Запустите запрос («оценка:> 9») и проверьте количество обращений -> общее значение. См. Примеры в the doc.

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