我想從ElasticSearch索引中返回最近的記錄(前1),類似於下面的sql查詢;返回ElasticSearch索引中的最新記錄
SELECT TOP 1 Id, name, title
FROM MyTable
ORDER BY Date DESC;
可以這樣做嗎?
我想從ElasticSearch索引中返回最近的記錄(前1),類似於下面的sql查詢;返回ElasticSearch索引中的最新記錄
SELECT TOP 1 Id, name, title
FROM MyTable
ORDER BY Date DESC;
可以這樣做嗎?
您是否在文檔映射中啓用了_timestamp?
{
"doctype": {
"_timestamp": {
"enabled": "true",
"store": "yes"
},
"properties": {
...
}
}
}
你可以在這裏查看你的映射:
http://localhost:9200/_all/_mapping
如果是這樣,我認爲這可能工作得到最新:
{
"query": {
"match_all": {}
},
"size": 1,
"sort": [
{
"_timestamp": {
"order": "desc"
}
}
]
}
有關信息的目的,_timestamp現在因爲2.0棄用的3.0β2。 在您的映射中使用date
類型。
從date
數據類型文檔的簡單日期映射JSON:
{
"mappings": {
"my_type": {
"properties": {
"date": {
"type": "date"
}
}
}
}
}
您還可以在date
添加format
場:
{
"mappings": {
"my_type": {
"properties": {
"date": {
"type": "date",
"format": "yyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
}
}
}
}
}
日期使用(帶出來時,最後一ID郵票)
樣品URL:http://localhost:9200/deal/dealsdetails/
方法:POST
查詢:
{
"fields": ["_id"],
"sort": [{
"created_date": {
"order": "desc"
}
},
{
"_score": {
"order": "desc"
}
}
],
"size": 1
}
結果:
{
"took": 4,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 9,
"max_score": null,
"hits": [{
"_index": "deal",
"_type": "dealsdetails",
"_id": "10",
"_score": 1,
"sort": [
1478266145174,
1
]
}]
}
}
的_timestamp並沒有爲我工作了,
這個查詢請求也爲我工作:
(如mconlin的答案)
{
"query": {
"match_all": {}
},
"size": "1",
"sort": [
{
"@timestamp": {
"order": "desc"
}
}
]
}
可能是微不足道的,但_timestamp答案沒有給一個錯誤,但不是一個好的結果要麼...
希望能幫助別人......
(kibana /彈性5.0.4)
S.
至少在我使用的客戶端(Chrome「高級REST客戶端」擴展)中,我必須將「」大小「:1」的「1」放在雙引號中才能生效。 –
使用_timestamp字段和使用自定義時間戳字段有什麼區別? – castarco
@castarco,啓用時,_timestamp會自動生成,因此您可以像使用mconlin建議的那樣使用它,而不是添加自己的。但是,從2.0.0-beta2開始,_timestamp已被棄用,因此您應該使用自己的時間戳:) https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-timestamp- field.html – mork