2016-08-01 2 views
0

Скажет, у меня есть документы со следующей схемой в упругом Поиске:Упругого Поиск: значение, относящееся к максимальному значению с фильтром

{ 
    "data": { 
    "cpu_id": string, 
    "cpu_usage": double 
    }, 
    "time": timestamp 
} 

Учитывая cpu_id, как я могу найти cpu_usage на макс time? Я потратил хорошее время, пытаясь понять это, но не сделал большого поворота. В SQL это было бы примерно так:

SELECT cpu_usage 
FROM cpus 
WHERE cpu_id = 1 
ORDER BY cpu_ts DESC 
LIMIT 1 

Приветствия за помощь!

ответ

1

Вы можете попробовать это:

"size": 1, 
"sort": { 
    "time": { 
    "order": "desc" 
    } 
}, 
"query": { 
    "filtered": { 
    "filter": { 
     "term": { 
     "data.cpu_id": "1" 
     } 
    } 
    } 
} 

Это даст вам самый последний документ (в соответствии со значением time), что соответствует cpu_id = "1".

+0

Это возвращает 'query_parsing_exception' с причиной' query malformed, no field after start object'. – Mullefa

+0

К сожалению, см. Править. –

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