2016-08-01 67 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

糟糕,請參閱編輯。 –