terms - Devuelve el registro más reciente del índice ElasticSearch
query dsl kibana (5)
Me gustaría devolver el registro más reciente (top 1) del índice ElasticSearch similar a la consulta sql a continuación;
SELECT TOP 1 Id, name, title
FROM MyTable
ORDER BY Date DESC;
Se puede hacer esto?
¿Ha habilitado _timestamp en su asignación de documentos?
{
"doctype": {
"_timestamp": {
"enabled": "true",
"store": "yes"
},
"properties": {
...
}
}
}
Puede verificar su mapeo aquí:
http://localhost:9200/_all/_mapping
Si es así, creo que esto podría funcionar para obtener el más reciente:
{
"query": {
"match_all": {}
},
"size": 1,
"sort": [
{
"_timestamp": {
"order": "desc"
}
}
]
}
Con fines informativos, _timestamp ahora está en desuso desde 2.0.0-beta2. Use el tipo de date
en su mapeo.
Un mapeo de fecha simple JSON a partir del tipo de datos de date
doc:
{
"mappings": {
"my_type": {
"properties": {
"date": {
"type": "date"
}
}
}
}
}
También puede agregar un campo de format
en la date
:
{
"mappings": {
"my_type": {
"properties": {
"date": {
"type": "date",
"format": "yyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
}
}
}
}
}
Obtener el último ID por fecha (sin sello de tiempo)
URL de muestra : http://localhost:9200/deal/dealsdetails/
Método : POST
Consulta :
{
"fields": ["_id"],
"sort": [{
"created_date": {
"order": "desc"
}
},
{
"_score": {
"order": "desc"
}
}
],
"size": 1
}
resultado:
{
"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
]
}]
}
}
el _timestamp no funcionó para mí,
esta consulta funciona para mí:
(como en la respuesta de mconlin)
{
"query": {
"match_all": {}
},
"size": "1",
"sort": [
{
"@timestamp": {
"order": "desc"
}
}
]
}
Podría ser trivial, pero la respuesta _timestamp no dio un error pero tampoco un buen resultado ...
Espero ayudar a alguien ...
(kibana / elástico 5.0.4)
S.