2016-10-28 6 views
0

Я использую kibana 4.4.1 и в elasticsearch хранить состояние компьютера, только тогда, когда изменяется состояние ПК (открытым, закрытый, Варинг и т.д.)Как агрегировать данные по полю в elasticsearch?

Моих данных в выглядит Elasticsearch как:

{ "status_id":1 , "pc":"lpt001" , "date":"2016-10-25T17:49:00Z" } 
{ "status_id":3 , "pc":"lpt001" , "date":"2016-10-25T15:48:00Z" } 
{ "status_id":4 , "pc":"lpt002" , "date":"2016-10-25T15:46:00Z" } 
{ "status_id":1 , "pc":"lpt002" , "date":"2016-10-25T12:48:00Z" } 

И я, что бы получить самую новую запись, чтобы в любое время открыть, закрыть или закрыть некоторые ПК. Мой запрос как:

GET cb-2016.10.26/_search 
{ 
    "query": { 
    "match_all": { } 
    }, 
    "sort": [ 
    { 
     "date": { 
     "order": "desc" 
     } 
    } 
    ], 
    "aggs": { 
    "max_date":{ 
     "max": { 
     "field": "date" 
     } 
    } 
    } 
} 

И результат:

"aggregations": { 
    "max_date": { 
     "value": 1477417680000, 
     "value_as_string": "2016-10-25T17:48:00.000Z" 
    } 
    } 

Но что я хочу, чтобы это max_date для каждого "ПК": "lpt001", "lpt002".

Есть какой-либо способ разделить max_date на поле «pc»? Я прочитал кое-что о агрегатах ковша, но я не достиг результата.

Спасибо

ответ

0

финал запрос выглядит так:

{ 
    "query": { 
    "match_all": { } 
    }, 
    "aggs" : { 
     "pcstatus" : { 
      "terms" : { 
       "field" : "pc" 
      }, 
      "aggs": { 
       "top_date_hit": { 
        "top_hits": { 
         "sort": [ 
          { 
           "date": { 
            "order": "desc" 
           } 
          } 
         ], 
         "size" : 1 
        } 
       } 
      } 
     } 
    } 
} 
1

Да, вы можете сделать это, как это, используя terms агрегации для pc поля, а затем переместить max_date к югу агрегации terms один:

POST cb-2016.10.26/_search 
{ 
    "query": { 
    "match_all": { } 
    }, 
    "sort": [ 
    { 
     "date": { 
     "order": "desc" 
     } 
    } 
    ], 
    "aggs": { 
    "pcs": { 
     "terms": { 
     "field": "pc" 
     }, 
     "aggs": { 
     "max_date":{ 
      "max": { 
      "field": "date" 
      } 
     } 
     } 
    } 
    } 
} 
Смежные вопросы