Je développe une application node.js pour obtenir la dernière valeur d'un index à partir d'un cluster élastique. Mon serveur logstash envoie des données à elasticsearch toutes les secondes. Ainsi, l'index elasticsearch est mis à jour toutes les secondes. Chaque seconde, un nouveau document est ajouté à l'index elasticsearch.
Voici un exemple de document JSON
{
"_index": "weather",
"_type": "doc",
"_id": "eMIs_mQBol0Vk4cfUzG5",
"_version": 1,
"_score": null,
"_source": {
"weather": {
"main": "Clouds",
"icon": "04n",
"description": "broken clouds",
"id": 803
},
"@version": "1",
"clouds": {
"all": 75
},
"main": {
"humidity": 36,
"pressure": 1022,
"temp": 41,
"temp_max": 26,
"temp_min": 26
},
"wind": {
"deg": 360,
"speed": 3.6
},
"visibility": 16093,
"@timestamp": "2018-08-03T05:04:35.134Z",
"name": "Santa Clara"
},
"fields": {
"@timestamp": [
"2018-08-03T05:04:35.134Z"
]
},
"sort": [
1533272675134
]
}
Voici la photo de la table,
Mon code node.js ressemble à ceci,
let express = require('express');
let app = express();
let elasticsearch = require('elasticsearch');
app.get('/', function(req, res) {
res.send('Hello World!');
});
app.listen(3000, function() {
console.log('Example app listening on port 3000!');
});
let client = new elasticsearch.Client({
host: ['http://localhost:9200']
});
client.ping({
requestTimeout: 30000,
}, function(error) {
if (error) {
console.error('elasticsearch cluster is down!');
} else {
console.log('Everything is ok');
}
});
async function getResponse() {
const response = await client.get({
index: 'weather',
type: 'doc',
id: 'KsHW_GQBol0Vk4cfl2WY'
});
console.log(response);
}
getResponse();
Je suis capable de récupérer le document JSON basé sur l'id de l'index. Mais, je veux récupérer le dernier document JSON. Comment puis-je configurer mon serveur pour qu'il lise le dernier document toutes les secondes ? Existe-t-il un moyen de récupérer le dernier document JSON (sans connaître l'identifiant à l'avance) ?
Quelqu'un peut-il m'aider ? J'apprécierais vraiment que vous puissiez m'aider.
Merci d'avance !