2015-10-27 2 views
1

индекс I события, похожие на те ниже:Как получить последнее событие с заданным значением поля?

{ 
    "time": "2015-10-01", 
    "kind": "A" 
}, 
{ 
    "time": "2015-10-02", 
    "kind": "B" 
}, 
{ 
    "time": "2015-10-15", 
    "kind": "A" 
}, 
{ 
    "time": "2015-10-16", 
    "kind": "B" 
} 

Другими словами, они рассчитаны события нескольких видов (A и B в приведенном выше примере). Гарантируется, что не может быть двух или более событий одного и того же kind с тем же time.

Я ищу запрос, который будет извлекать последние() самые близкие к «сейчас» событиям для каждого вида. Для примера выше это будут две латы.

До сих пор, я вынуждал _id иметь значение kind, который автоматически хранится множество уникальных событий (события индексируются с течением времени, так что одна с датой 2015-10-16 гарантированно будет индексироваться после один из более ранних 2015-10-02). Это, конечно, не сохраняет историю событий, что-то я сейчас заинтересован в

ответ

1

Как об этом запросе:.

{ 
    "size": 0, 
    "aggs": { 
    "unique_kind": { 
     "terms": { 
     "field": "kind", 
     "size": 10 
     }, 
     "aggs": { 
     "max_date": { 
      "max": { 
      "field": "time" 
      } 
     }, 
     "1st": { 
      "top_hits": { 
      "size": 1, 
      "sort": [{"time":"desc"}] 
      } 
     } 
     } 
    } 
    } 
} 
+0

Фантастическая, спасибо. Я не знал, что вы можете вложить «aggs». – WoJ