2015-03-20 2 views
1

У меня есть простые документы с расписанием. Я хотел бы получить количество документов для самого последнего ScheduleId. Предполагая, что Max ScheduleId является самым последним, как мы будем писать этот запрос. Я искал и читал в течение нескольких часов и мог заставить его работать.Упругий фильтр поиска с агрегатом типа Макс. Или мин.

{ 
    "aggs": { 
    "max_schedule": { 
     "max": { 
     "field": "ScheduleId" 
     } 
    } 
    } 
} 

Это дает мне Max ScheduleId и общее количество документов на стороне этого агрегата.

Я был бы признателен, если бы кто-нибудь мог помочь мне в том, как принять это совокупное значение и применить его как фильтр (например, sub-запрос в SQL!).

ответ

1

Это следует сделать это:

{ 
    "aggs": { 
     "max_ScheduleId": { 
     "terms": { 
      "field": "ScheduleId", 
      "order" : { "_term" : "desc" }, 
      "size": 1 
     } 
     } 
    } 
} 

terms aggregation даст вам документ отсчетов для каждого термина, и это работает для целых чисел. Вам просто нужно заказать результаты по термину, а не по счету (по умолчанию). А так как вам нужен только самый высокий ScheduleID, то достаточно "size":1.

Вот код, который я использовал, чтобы проверить:

http://sense.qbox.io/gist/93fb979393754b8bd9b19cb903a64027cba40ece

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

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